{"id":1912,"date":"2021-06-30T14:47:24","date_gmt":"2021-06-30T14:47:24","guid":{"rendered":"https:\/\/sunaonako.my.id\/?p=1912"},"modified":"2022-05-06T06:57:41","modified_gmt":"2022-05-06T06:57:41","slug":"rencana-belajar-flutter-hands-on-tutorial","status":"publish","type":"post","link":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/","title":{"rendered":"Rencana Belajar Flutter : Hands On Tutorial"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Tampilan Aplikasi<\/h2>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter\"><img decoding=\"async\" width=\"171\" height=\"300\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-17-171x300.png\" alt=\"\" class=\"wp-image-1984\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-17-171x300.png 171w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-17.png 318w\" sizes=\"(max-width: 171px) 100vw, 171px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ya namanya masih belajar, dan ini blog buat belajar bareng, ya ini deh contoh aplikasinya, apa adanya. Jadi saya jelaskan, di contoh ini ada 3 widget utama, yang pertama profile card yang paling atas, yang kedua, ditengah itu intinya list item, yang ketiga itu banner.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Inisialisasi IDE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tahap Pertama inisialisasi pembuatan flutter terlebih dahulu:<br>Buka visual studio code, lalu jalankan terminal built in visual studio code dengan sintaks berikut:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>cd where_directory<\/li><li>flutter create &#8211;org firsttutorflutter.com fot<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-1.png\" alt=\"\" class=\"wp-image-1919\" width=\"176\" height=\"272\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-1.png 284w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-1-194x300.png 194w\" sizes=\"(max-width: 176px) 100vw, 176px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Nah, nanti akan kebuat tuh folder fot yang built ready buat pengembangan flutter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kemudian pilih papers icon pada visual studio code, open folder, cari dan select folder fot yang mana tempatnya pas di <code>where_directory<\/code> mu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, Tampilan IDEnya akan jadi seperti ini,<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" width=\"1024\" height=\"431\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-1024x431.png\" alt=\"\" class=\"wp-image-1923\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-1024x431.png 1024w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-300x126.png 300w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-768x323.png 768w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-1536x646.png 1536w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-360x151.png 360w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-545x229.png 545w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3-1600x673.png 1600w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-3.png 1852w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">list folder di dalam fot beserta script-scriptnya plus terminal sudah default ke direktori fot<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lanjut jalankan emulatornya<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4.png\" alt=\"\" class=\"wp-image-1924\" width=\"464\" height=\"249\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4.png 928w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4-300x161.png 300w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4-768x411.png 768w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4-360x193.png 360w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-4-545x292.png 545w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Biar Mempermudah, ini ada shortcut sederhana<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ctrl + shift + r buat munculin flutter code template<br>Shift + Alt + F buat ngerapihin<br>Shift + Alt + arrow down buat ngecopy deret code berulang<br><code>CTRL + Space<\/code> buat suggest<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Destruktur Default Boilerplate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Saat destruktur, posisi desain seperti ini :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5.png\" alt=\"\" class=\"wp-image-1929\" width=\"441\" height=\"363\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5.png 882w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5-300x247.png 300w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5-768x631.png 768w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5-360x296.png 360w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-5-545x448.png 545w\" sizes=\"(max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">main dart, fungsinya untuk tema, dan memanggil deklarasi awal untuk &#8220;Widget Page yang akan pertama diload&#8221;, yaitu pada <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">home<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import 'package:flutter\/material.dart';\n\nimport 'profile\/profile_page.dart';\n\nvoid main() {\n  runApp(MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Demo Aplikasi',\n      theme: ThemeData(\n        primarySwatch: Colors.blue,\n      ),\n      home: ProfilePage(),\n    );\n  }\n}\n<\/code><\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Profile Page, ini akan jadi main activity dari kumpulan banyak widget menjadi satu<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import 'package:flutter\/material.dart';\nimport 'package:flutter\/widgets.dart';\n\nimport 'widget\/profile_information.dart';\n\nclass ProfilePage extends StatefulWidget {\n  ProfilePage({\n    Key? key,\n  }) : super(key: key);\n\n  @override\n  _ProfilePageState createState() =&gt; _ProfilePageState();\n}\n\nclass _ProfilePageState extends State&lt;ProfilePage&gt; {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      backgroundColor: Colors.grey&#91;50],\n      body: SafeArea(\n          child: Column(\n        children: &#91;\n          ProfileInformationWidget(),\n        ],\n      )),\n    );\n  }\n}<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Kalau kalian perhatikan pada ProfilePage terdapat deklarasi custom ProfileInformationWidget, itu adalah stateless widget yang bisa dibuat generate langsung dengan shortcut statel lalu ctrl + space atau statelessw, nanti akan muncul opsi StatelessWidget, pilih, lalu ketik nama classnya yaitu ProfileInformationWidget.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Menambah Akses Gambar<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Di flutter untuk mengakses gambar (atau file lain), kita bisa deklarasikan folder tempat menyimpan gambar tersebut, caranya, cukup buat foldernya, di sini, saya buat folder asset lalu dalamnya lagi ada folder images<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lalu pada flutter, kita buka pubsec.yaml, silahkan uncomment lalu modify sesuai dengan relative posisi direktori folder gambar tadi<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" width=\"1024\" height=\"181\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-1024x181.png\" alt=\"\" class=\"wp-image-1963\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-1024x181.png 1024w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-300x53.png 300w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-768x136.png 768w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-360x64.png 360w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12-545x96.png 545w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-12.png 1148w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kalau aku jadinya seperti ini<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  assets:\n    - assets\/images\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Sekarang mari membuat main widget Flutternya<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Membuat Profile Info<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">sekarang kita ke basic buat outernya dulu<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">    return Container(\n      \/\/Ini dekorasi kolom penampung\n      width: double.infinity,\n      height: 250,\n      decoration: BoxDecoration(boxShadow: [\n        BoxShadow(\n            color: Colors.grey,\n            spreadRadius: 2,\n            blurRadius: 15,\n            offset: Offset.fromDirection(90)),\n      ]),\n      \/\/Ini untuk isi kolom penampung\n      child: Column(),\n    );<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Jadi kita inisialisasi width dengan ukuran maksimum, lalu heightnya 250, tambahkan dekorasi<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-10.png\" alt=\"\" class=\"wp-image-1959\" width=\"174\" height=\"300\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-10.png 371w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-10-174x300.png 174w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-10-360x620.png 360w\" sizes=\"(max-width: 174px) 100vw, 174px\" \/><figcaption>jadinya akan terdapat box dengan shadow berikut<\/figcaption><\/figure><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">sekarang kita tambahkan warna boxnya di dalam decoration paramnya<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>     decoration: BoxDecoration(boxShadow: &#91;\n        BoxShadow(\n            color: Colors.grey,\n            spreadRadius: 2,\n            blurRadius: 15,\n            offset: Offset.fromDirection(90)),\n      ], color: Colors.white, borderRadius: BorderRadius.circular(10)),\n      \/\/ Set Widget padding margin\n      margin: EdgeInsets.all(10),\n      padding: EdgeInsets.all(15),\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jadilah kotak<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-13.png\" alt=\"\" class=\"wp-image-1964\" width=\"241\" height=\"413\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-13.png 370w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-13-175x300.png 175w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-13-360x618.png 360w\" sizes=\"(max-width: 241px) 100vw, 241px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kode untuk seluruh bagian card profile<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import 'package:flutter\/material.dart';\nimport 'package:flutter\/widgets.dart';\n\nclass ProfileInformationWidget extends StatelessWidget {\n  const ProfileInformationWidget({Key? key}) : super(key: key);\n\n  @override\n  Widget build(BuildContext context) {\n    return Container(\n      \/\/Ini dekorasi kolom penampung\n      width: double.infinity,\n      height: 250,\n      decoration: BoxDecoration(boxShadow: [\n        BoxShadow(\n            color: Colors.grey,\n            spreadRadius: 2,\n            blurRadius: 15,\n            offset: Offset.fromDirection(90)),\n      ], color: Colors.white, borderRadius: BorderRadius.circular(10)),\n      \/\/ Set Widget padding margin\n      margin: EdgeInsets.all(10),\n      padding: EdgeInsets.all(15),\n      \/\/Ini untuk isi kolom penampung\n      child: Column(\n        \/\/Rata Kiri\n        crossAxisAlignment: CrossAxisAlignment.start,\n        children: [\n          \/\/ Bagian user info\n          Container(\n            height: 160,\n            color: Colors.yellow,\n            \/\/ Ini untuk foto profile  dan informasi user\n            child: Row(\n              children: [\n                \/\/Container untuk foto\n                Container(\n                  width: 150,\n                  margin: EdgeInsets.only(bottom: 10),\n                  decoration: BoxDecoration(\n                      image: DecorationImage(\n                          image: AssetImage('assets\/images\/nak.jpg'),\n                          fit: BoxFit.cover),\n                      borderRadius: BorderRadius.circular(15)),\n                ),\n                \/\/ Container untuk user infos\n                \/\/ Flexible mempengaruhi keputusan child\n                Flexible(\n                    child: Container(\n                  margin: EdgeInsets.only(left: 15, top: 10),\n                  child: Column(\n                    crossAxisAlignment: CrossAxisAlignment.start,\n                    mainAxisSize: MainAxisSize.max,\n                    children: [\n                      Text(\n                        \"Nak Sun Suk\",\n                        \/\/ bila teks penuh\n                        overflow: TextOverflow.ellipsis,\n                        maxLines: 1,\n                        style: TextStyle(\n                            fontSize: 20, fontWeight: FontWeight.bold),\n                      ),\n                      SizedBox(\n                        height: 20,\n                      ),\n                      Text(\n                        \"Cloud Developer\",\n                        \/\/ bila teks penuh\n                        overflow: TextOverflow.ellipsis,\n                        maxLines: 1,\n                        style: TextStyle(\n                            color: Colors.blueGrey,\n                            fontSize: 13,\n                            fontWeight: FontWeight.bold),\n                      ),\n                      SizedBox(\n                        height: 20,\n                      ),\n                      Flexible(\n                        child: Container(\n                          decoration: BoxDecoration(\n                              color: Colors.grey[50],\n                              borderRadius: BorderRadius.circular(7)),\n                          height: 60,\n                          \/\/ color: Colors.grey,\n                          child: Row(\n                            mainAxisAlignment: MainAxisAlignment.spaceAround,\n                            children: [\n                              InformationValueBox(\n                                subtitle: \"Articles\",\n                                value: \"10\",\n                              ),\n                              InformationValueBox(\n                                subtitle: \"Followers\",\n                                value: \"10\",\n                              ),\n                              InformationValueBox(\n                                subtitle: \"Rating\",\n                                value: \"10\",\n                              ),\n                            ],\n                          ),\n                        ),\n                      ),\n                    ],\n                  ),\n                ))\n              ],\n            ),\n          ),\n          \/\/ Bagian Button bottom\n          Flexible(\n              child: Container(\n            color: Colors.orange[200],\n            child: Row(\n              crossAxisAlignment: CrossAxisAlignment.stretch,\n              children: [\n                Expanded(\n                  flex: 1,\n                  child: OutlineButton(\n                      shape: RoundedRectangleBorder(\n                          borderRadius: BorderRadius.circular(10)),\n                      child: Text(\n                        \"Chat\",\n                        style: TextStyle(fontSize: 16),\n                      ),\n                      onPressed: () =&gt; {}),\n                ),\n                \/\/Tambah space antar tombol\n                SizedBox(\n                  width: 15,\n                ),\n                Expanded(\n                    flex: 1,\n                    child: RaisedButton(\n                      onPressed: () {},\n                      color: Colors.blue,\n                      child: Text(\n                        \"Follow\",\n                        style: TextStyle(fontSize: 16, color: Colors.white),\n                      ),\n                      shape: RoundedRectangleBorder(\n                          borderRadius: BorderRadius.circular(10)),\n                    ))\n              ],\n            ),\n          ))\n        ],\n      ),\n    );\n  }\n}\n\nclass InformationValueBox extends StatelessWidget {\n  const InformationValueBox(\n      {Key? key, required this.subtitle, required this.value})\n      : super(key: key);\n\n  final String subtitle, value;\n\n  @override\n  Widget build(BuildContext context) {\n    return Column(\n      mainAxisAlignment: MainAxisAlignment.center,\n      crossAxisAlignment: CrossAxisAlignment.start,\n      children: [\n        Text(\n          subtitle,\n          style: TextStyle(\n            fontWeight: FontWeight.bold,\n            fontSize: 15,\n            color: Colors.black54,\n          ),\n        ),\n        Text(\n          value,\n          style: TextStyle(\n            fontWeight: FontWeight.bold,\n            fontSize: 20,\n            color: Colors.black87,\n          ),\n        ),\n      ],\n    );\n  }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">sebenarnya untuk image ini kita bisa pakai<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">child:&nbsp;Image.asset('assets\/images\/namaimage.jpg' <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">atau pakai<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>child: FittedBox(\n                  child: Image.asset('assets\/images\/namaimage.jpg'),\n                  fit: BoxFit.fill,\n),<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tapi saya ingin memberikan efek melengkung di setiap sisi, jadi saya pilih boxdecoration kemudian mempunyai background image.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Perbedaan Expanded dan Flexible?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">dalam flutter gak jauh-jauh amat bedanya, Expanded itu berusaha untuk match parent dan Flexible itu hanya mengisi seadanya atau wrap content, yang jadi kelebihan dari flexible adalah ketika misal isi dari yang diwrap itu kebesaran, misal teksnya kepanjangan, otomatis teks sisa akan muncul dibawah, sedangkan expanded akan muncul error bila widget yang diwrap kebesaran. Istilahnya <code>Flexible (fit: FlexFit.tight) = Expanded()<\/code> Yeah, secara default Flexible itu FlexFit.loose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BTW, Berikut ini hasil jadinya<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-14.png\" alt=\"\" class=\"wp-image-1967\" width=\"258\" height=\"473\" srcset=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-14.png 368w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-14-164x300.png 164w, https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-14-360x660.png 360w\" sizes=\"(max-width: 258px) 100vw, 258px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Membuat List Discovery Widged<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kali ini kita buat list view pada flutter, sekarang kita tidak buat class, tapi function :3, dan itu di dalam file profile_page<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ini just fun saja, tapi kalian bisa rubah stateless widget ke statefull widget caranya klik ctrl + shift + r pada area extend StatelessWidget, oke untuk full codenya seperti ini<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import 'package:flutter\/material.dart';\nimport 'package:flutter\/widgets.dart';\n\nimport 'widget\/profile_information.dart';\n\nclass ProfilePage extends StatefulWidget {\n  ProfilePage({\n    Key? key,\n  }) : super(key: key);\n\n  @override\n  _ProfilePageState createState() =&gt; _ProfilePageState();\n}\n\nclass _ProfilePageState extends State&lt;ProfilePage&gt; {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      backgroundColor: Colors.grey[50],\n      body: SafeArea(\n          child: Column(\n        children: [\n          ProfileInformationWidget(),\n          SizedBox(\n            height: 20,\n          ),\n          Container(\n              margin: EdgeInsets.only(left: 10),\n              child: _listDiscoveryData(\n                  \"Notable Works\", \"Based on popularity On Social Media\")),\n        ],\n      )),\n    );\n  }\n}\n\nWidget _listDiscoveryData(String title, String subtitle) {\n  return Container(\n    width: double.infinity,\n    child: Column(\n      crossAxisAlignment: CrossAxisAlignment.start,\n      children: [\n        Column(\n          crossAxisAlignment: CrossAxisAlignment.start,\n          children: [\n            Text(title,\n                style: TextStyle(\n                  fontSize: 20,\n                  fontWeight: FontWeight.bold,\n                )),\n            SizedBox(\n              height: 8,\n            ),\n            Text(subtitle,\n                overflow: TextOverflow.ellipsis,\n                maxLines: 1,\n                style: TextStyle(\n                    fontSize: 15,\n                    fontWeight: FontWeight.bold,\n                    color: Colors.grey))\n          ],\n        ),\n        SizedBox(\n          height: 10,\n        ),\n        Container(\n          height: 200,\n          \/\/list perlu di wrap dengan container untuk deklarasi weight\n          child: ListView.builder(\n              scrollDirection: Axis.horizontal,\n              itemBuilder: (context, index) {\n                return Container(\n                  width: 230,\n                  margin: EdgeInsets.only(right: 15),\n                  child: Column(\n                    children: [\n                      Flexible(\n                        flex: 6,\n                        child: Container(\n                          width: 230,\n                         \n                          decoration: BoxDecoration(\n                              borderRadius: BorderRadius.circular(10),\n                              image: DecorationImage(\n                                  fit: BoxFit.cover,\n                                  image: NetworkImage(\n                                    \"http:\/\/www.world-art.ru\/animation\/img\/10000\/9660\/10.jpg\",\n                                  ))),\n                        ),\n                      ),\n                      SizedBox(\n                        height: 10,\n                      ),\n                      Flexible(\n                        flex: 3,\n                        child: Container(\n                          decoration: BoxDecoration(\n                            borderRadius: BorderRadius.circular(10),\n                            color: Colors.lightBlue.shade50,\n                          ),\n                          child: Flex(\n                            direction: Axis.vertical,\n                            crossAxisAlignment: CrossAxisAlignment.start,\n                            children: [\n                              Text(\n                                \"Nature\",\n                                style: TextStyle(\n                                    fontSize: 15,\n                                    color: Colors.yellow.shade900),\n                              ),\n                              SizedBox(\n                                height: 10,\n                              ),\n                              Flexible(\n                                child: Text(\n                                    \"Let us plant more trees from this year Let us plant more trees from this year\",\n                                    maxLines: 2,\n                                    overflow: TextOverflow.ellipsis,\n                                    style: TextStyle(\n                                        fontSize: 15, color: Colors.black)),\n                              ),\n                            ],\n                          ),\n                        ),\n                      ),\n                    ],\n                  ),\n                );\n              }),\n        ),\n        SizedBox(\n          height: 15,\n        ),\n      ],\n    ),\n  );\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ItemBuilder <\/code>Akan mereturn list widgets, <code>ListViews<\/code> itu strict dan perlu deklarasi ukuran height, makannya perlu diwrap dulu dengan <code>Container<\/code> dan mau discroll kemana<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jadinya akan seperti ini<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/image-15.png\" alt=\"\" class=\"wp-image-1970\" width=\"251\" height=\"436\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Basic Routing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kita akan nyoba basic routing guys<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">kita buat file dart baru namanya homepage.dart, classnya saya iseng buat statefull, biar ada contoh bagaimana mengambil parameter yang dipass kalau statefull<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import 'package:flutter\/material.dart';\nimport 'package:flutter\/widgets.dart';\n\nclass HomePage extends StatefulWidget {\n  \/\/deklarasi string untuk paramater  \n  HomePage({Key? key, required this.title}) : super(key: key);\n  final String title; \n  @override\n  _HomePageState createState() =&gt; _HomePageState();\n}\n\nclass _HomePageState extends State&lt;HomePage&gt; {\n  @override\n  Widget build(BuildContext context) {\n    return SafeArea(\n      child: Scaffold(\n        appBar: AppBar(\n          title: Text(widget.title), \/\/Manggilnya pakai variable widget yang mana auto ada\n        ),\n        body: Column(children: [\n          Container(\n            margin: EdgeInsets.only(top: 20),\n            child: Center(\n              child: ElevatedButton(\n                onPressed: () =&gt; {\n                  Navigator.of(context).pop(),\n                },\n                style: ElevatedButton.styleFrom(\n                  primary: Colors.teal,\n                ),\n                child: Text(\n                  'Go To Profile',\n                ),\n              ),\n            ),\n          )\n        ]),\n      ),\n    );\n  }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">lalu pada dart profile_information itu ada tombol, tambahkan onPress, kalau saya, saya pilih chat button<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>                  Expanded(\n                    flex: 1,\n                    child: OutlineButton(\n                        shape: RoundedRectangleBorder(\n                            borderRadius: BorderRadius.circular(10)),\n                        child: Text(\n                          \"Chat\",\n                          style: TextStyle(fontSize: 16),\n                        ),\n                        onPressed: () {\n                          Navigator.of(context).push(MaterialPageRoute(\n                              builder: (context) =&gt; OtherPage(\n                                    title: 'From Profile Page',\n                                  )));\n                        }),\n                  ),<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sekarang coba didemokan dengan cara klik tombolnya, dan lihat hasilnya,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><p>Navigator of content lalu push maksudnya navigasi dari konteks yang mana konteks ini adalah activity sekarang ini, lalu push, pust ini mereturn route dan dalam flutter ada built in route yaitu MaterialPageRoute.<\/p>\n<p>Navigator.of(context).pop() berfungsi untuk kembali ke halaman aktif sebelumnya.<\/p><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nah untuk widget featured artikel, kalian coba kerjakan menggunakan tutorial yang tersedia<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<h4 class=\"wp-block-heading\">Solusi untuk featured page<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import 'package:flutter\/material.dart';\n\nclass FeaturedArticleBannerWidget extends StatelessWidget {\n  const FeaturedArticleBannerWidget({\n    Key key,\n  }) : super(key: key);\n\n  @override\n  Widget build(BuildContext context) {\n    return Container(\n      padding: EdgeInsets.symmetric(horizontal: 20),\n      height: 150,\n      decoration: BoxDecoration(\n          color: Colors.teal, borderRadius: BorderRadius.circular(18)),\n      child: Column(\n        mainAxisAlignment: MainAxisAlignment.center,\n        crossAxisAlignment: CrossAxisAlignment.start,\n        children: [\n          Container(\n              padding: EdgeInsets.all(10),\n              decoration: BoxDecoration(\n                  color: Colors.teal[200],\n                  borderRadius: BorderRadius.circular(10)),\n              child: Text(\n                \"Featured Article\",\n                style: TextStyle(\n                    color: Colors.white,\n                    fontSize: 16,\n                    fontWeight: FontWeight.w500),\n              )),\n          SizedBox(\n            height: 20,\n          ),\n          Flexible(\n            child: Text(\n              \"natural mood regulation low or even absent in people with depression\",\n              maxLines: 2,\n              overflow: TextOverflow.ellipsis,\n              style: TextStyle(\n                  color: Colors.white,\n                  fontSize: 20,\n                  fontWeight: FontWeight.bold),\n            ),\n          )\n        ],\n      ),\n    );\n  }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ya namanya masih belajar, dan ini blog buat belajar bareng, ya ini deh contoh aplikasinya, apa adanya. Jadi saya jelaskan, di contoh ini ada 3 widget utama, yang pertama profile card yang paling atas, yang kedua, ditengah itu intinya list item, yang ketiga itu banner. Inisialisasi IDE Tahap Pertama inisialisasi pembuatan flutter terlebih dahulu:Buka visual&#8230;<\/p>\n","protected":false},"author":2,"featured_media":1993,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[254],"tags":[255,256,257],"class_list":["post-1912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-development","tag-flutter","tag-mobile-development","tag-pengembangan-mobile","reaction-wahaha"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.8 (Yoast SEO v23.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Rencana Belajar Flutter : Hands On Tutorial - Sedang Belajar<\/title>\n<meta name=\"description\" content=\"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\" \/>\n<link rel=\"next\" href=\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rencana Belajar Flutter : Hands On Tutorial\" \/>\n<meta property=\"og:description\" content=\"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"Hilarious Developer School\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-30T14:47:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-06T06:57:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2240\" \/>\n\t<meta property=\"og:image:height\" content=\"1260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"nakomin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"nakomin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\"},\"author\":{\"name\":\"nakomin\",\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a\"},\"headline\":\"Rencana Belajar Flutter : Hands On Tutorial\",\"datePublished\":\"2021-06-30T14:47:24+00:00\",\"dateModified\":\"2022-05-06T06:57:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\"},\"wordCount\":643,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a\"},\"image\":{\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png\",\"keywords\":[\"flutter\",\"mobile development\",\"pengembangan mobile\"],\"articleSection\":[\"Mobile Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\",\"url\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\",\"name\":\"Rencana Belajar Flutter : Hands On Tutorial - Sedang Belajar\",\"isPartOf\":{\"@id\":\"https:\/\/sunaonako.my.id\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png\",\"datePublished\":\"2021-06-30T14:47:24+00:00\",\"dateModified\":\"2022-05-06T06:57:41+00:00\",\"description\":\"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage\",\"url\":\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png\",\"contentUrl\":\"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png\",\"width\":\"2240\",\"height\":\"1260\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sunaonako.my.id\/#website\",\"url\":\"https:\/\/sunaonako.my.id\/\",\"name\":\"Hilarious Developer School\",\"description\":\"Catatan Developer tentang Kurikulum Dunia Modern\",\"publisher\":{\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sunaonako.my.id\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a\",\"name\":\"nakomin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/cdn.sunaonako.my.id\/aruuploads\/2021\/07\/Minimalist-Letter-Initial-Logo.png\",\"contentUrl\":\"https:\/\/cdn.sunaonako.my.id\/aruuploads\/2021\/07\/Minimalist-Letter-Initial-Logo.png\",\"width\":\"250\",\"height\":\"250\",\"caption\":\"nakomin\"},\"logo\":{\"@id\":\"https:\/\/sunaonako.my.id\/#\/schema\/person\/image\/\"},\"description\":\"Believe at the heart of BNRS Here you will find content about developers needs whether it\u2019s coding tutorials or the lifestyle of employee in the IT circle, understanding of the realm of ui\/ux and futuristic tech for free in one place. Don\u2019t forget to follow the nakotek socials to give the author enthusiasm in pioneering this website. #wahahaforever\",\"sameAs\":[\"https:\/\/sunaonako.my.id\"],\"url\":\"https:\/\/sunaonako.my.id\/tomodachi\/nakomin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rencana Belajar Flutter : Hands On Tutorial - Sedang Belajar","description":"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/","next":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/2\/","og_locale":"en_US","og_type":"article","og_title":"Rencana Belajar Flutter : Hands On Tutorial","og_description":"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter","og_url":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/","og_site_name":"Hilarious Developer School","article_published_time":"2021-06-30T14:47:24+00:00","article_modified_time":"2022-05-06T06:57:41+00:00","og_image":[{"width":2240,"height":1260,"url":"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png","type":"image\/png"}],"author":"nakomin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"nakomin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#article","isPartOf":{"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/"},"author":{"name":"nakomin","@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a"},"headline":"Rencana Belajar Flutter : Hands On Tutorial","datePublished":"2021-06-30T14:47:24+00:00","dateModified":"2022-05-06T06:57:41+00:00","mainEntityOfPage":{"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/"},"wordCount":643,"commentCount":0,"publisher":{"@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a"},"image":{"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png","keywords":["flutter","mobile development","pengembangan mobile"],"articleSection":["Mobile Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/","url":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/","name":"Rencana Belajar Flutter : Hands On Tutorial - Sedang Belajar","isPartOf":{"@id":"https:\/\/sunaonako.my.id\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png","datePublished":"2021-06-30T14:47:24+00:00","dateModified":"2022-05-06T06:57:41+00:00","description":"Belajar membuat aplikasi flutter simple sederhana, memahami widget dan routing sederhana, Have fun saja dan ini sekedar catatan kecil proses belajar flutter","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sunaonako.my.id\/blog\/rencana-belajar-flutter-hands-on-tutorial\/#primaryimage","url":"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png","contentUrl":"https:\/\/sunaonako.my.id\/aruuploads\/2021\/06\/banner.png","width":"2240","height":"1260"},{"@type":"WebSite","@id":"https:\/\/sunaonako.my.id\/#website","url":"https:\/\/sunaonako.my.id\/","name":"Hilarious Developer School","description":"Catatan Developer tentang Kurikulum Dunia Modern","publisher":{"@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sunaonako.my.id\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/e35d0cb9128a86b66ec2ba6abacadd5a","name":"nakomin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/image\/","url":"https:\/\/cdn.sunaonako.my.id\/aruuploads\/2021\/07\/Minimalist-Letter-Initial-Logo.png","contentUrl":"https:\/\/cdn.sunaonako.my.id\/aruuploads\/2021\/07\/Minimalist-Letter-Initial-Logo.png","width":"250","height":"250","caption":"nakomin"},"logo":{"@id":"https:\/\/sunaonako.my.id\/#\/schema\/person\/image\/"},"description":"Believe at the heart of BNRS Here you will find content about developers needs whether it\u2019s coding tutorials or the lifestyle of employee in the IT circle, understanding of the realm of ui\/ux and futuristic tech for free in one place. Don\u2019t forget to follow the nakotek socials to give the author enthusiasm in pioneering this website. #wahahaforever","sameAs":["https:\/\/sunaonako.my.id"],"url":"https:\/\/sunaonako.my.id\/tomodachi\/nakomin\/"}]}},"_links":{"self":[{"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/posts\/1912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/comments?post=1912"}],"version-history":[{"count":0,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/posts\/1912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/media\/1993"}],"wp:attachment":[{"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/media?parent=1912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/categories?post=1912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunaonako.my.id\/apps-api\/wp\/v2\/tags?post=1912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}