[Musik] Halo semuanya Kembali lagi bersama Project kita lanjutin lagi materi tentang clean arsitectture nih sebelumnya kita udah bikin domain layer udah bikin entitas repositories abstraknya terus kita udah bikin caseuse cas-nya gu Nah di sini udah clear nih jadinya di domain layer ini udah ada ini udah ada udah ada nah sekarang kita masuk ke mana nih jadi setelah kita udah punya domain layer kita jangan langsung ke tampilan jadi kita eh tampilan itu belakangan kita bikin data layernya dulu kenapa Data layer step kedua Karena setelah kita sudah memiliki repos Story datanya tuh diadain dulu diambil dulu datanya dari database kalau misal datanya sudah ada baru kita bikin tampilannya atau kita tampilin tuh datanya ke UI gitu jadi step presentation layer ini step terakhir ya jangan mikirin tampilannya dulu entar dulu itu belakangan yang jelas adalah step di domain layer udah clear baru kita masuk ke data layer sini kita masuk ke data layer nih data layer data layer ni warnanya apa nih hitam aja ya biar sama nih data layer ini step keima jadi selanjutnya adalah kita fokus ke bikin data layer nah di data layer itu juga sama nih ada beberapa folder ada data source ada model ada reposories ini apa sih ya ini kita Coba bikin dulu ya Ada model ini kita copy aja sini ada model ada apalagi tadi Eh repory ya ada rep Stories juga ternyata dan satu lagi ada eh apa tadi data source gitu ya data source Nah ini apa sih Bang Kok di sini ada repository lagi di data layer kok ada reposory lagi Nah jadi di repository sini itu e bukan abstrak k eh bukan bukan abstrak k ya tapi dia kelas biasa dia kelas biasa atau kita bisa sebut sebagai implementasinya Asya ya jadi implementation nah jadi repository di sini untuk mengimplementasi abstrak di sini intinya gitu ya Jadi kita mulai dari mana dulu jadi step selanjutnya adalah kita bikin modelnya dulu ya Model profilennya jadi setelah kita memiliki di sini ada entitas tapi entitas ini kan e belum ada from Jon to Jon ya Jadi kalau misal kita punya punya database misalnya kayak gini Mana dia single user nanti kita punya datanya kayak gini nih dapat dari back end kayak gini bentuknya berupa json nah data json ini kita mau convert ke bentuk kelas profile Nah kita belum punya nih nge-convert-nya itu gimana Jadi dari bentuknya kayak gini kita akan convert bentuknya menjadi Clas profile jadi bentuknya nanti akan bentuknya kayak gini nih nah seperti ini ya jadi bentuknya bakalan ada datanya eid-nya email first name last name sama Avatar nah kayak gitu Jadi intinya dia berbentuk sebuah objek objek flutter eh objectek dart gitu ya objectek profile jadi kita akan convert nih data dari database kita akan convert ke bentuk yang seperti ini ke bentuk yang kita udah ubah ada id email full name namanya kita gabung ya first name last name ini kita gabung dari database jadi satu kesatuan dan kita ubah change e namanya profile image url kalau dari backend dikasihnya Avatar gak apa-apa jadi ini kita akan convert Jadi intinya adalah kita bikin sebuah model ini step sekarang adalah bikin model profilennya ya ini mirip ya Mirip copy paste aja di sini tapi kita namainnya profile model di mana profile model ini ya profile model ini dia mengektensi dari entitasnya entitasnya adalah profile maka di sini exendnya jangan equitable lagi karena orang tuanya udah ada equitable jadinya di sini ggak usah equitable lagi tapi kita parentnya yaitu profile Nah kita enter Nah jadi kayak gini ini kita rapiin dulu nah profile model ini dia bakalan error merah Kenapa karena dia mengesensi orang tuanya Orang tuanya itu butuh ya di sini Butuh semua datanya jadi data-data di sini kita harus lempar ke orang tuanya menggunakan metode super ya jadi di sini kita pasang super Nah kita harus kasih nih ke orang tuanya jadi super ini butuh apa nih super ini ibaratnya e profile orang tuanya ya Nah di sini ada kontrol spasi Oh dia butuh ID Ya udah lempar aja id-nya ini itu kemudian dia butuh email Ya udah lempar lagi email kemudian dia butuh full name nah full name ini dari modelnya itu jangan langsung full name tapi kita dapat dari database itu berupa first name last name jadi di sini kita ganti namanya first name dan last name gitu ya first name last name kita tangkap nih first name last name-nya full name-nya itu berarti kita tambahin spasi last name-nya nah kayak gitu kemudian dia butuh apa lagi profile image nah ini Kita samain ya Avatar di sini Avatar berarti di sini Avatar kayak gitu nah ini udah enggak merah kan jadinya terus di sini objeknya juga Kita samain aja di sini ya Oke karena dia ggak extend equable Jadi kita gak perlu yang itu lagi jadi bentuknya akan seperti ini nah ini kenapa nih error-eror nih ini sebenarnya ini bukan error sih ini warning ini warning ya cuman kita lihat dulu nih di sini katanya dia butuh override Oke kita quick fix saja overri oh Masih error dia butuh inherit ini over get bisa enggak nih overriidden Oke kita ignore aja nih override-nya atau kalau enggak mau kayak gini kalau misalnya dia sama penamaannya di sini id di sini ID terus di orang tuanya juga bentuknya namanya ID maka kita bisa langsung kasih aja nih jadi kita enggak usah tampung di sini tapi di sini kita langsung kasih super Nah kalau kita langsung kasih super di sini udah enggak usah lagi kayak gitu nah emailnya juga emailnya kan sama nih sama di orang tuanya sama-sama email ini gak usah dikasih ini kita kasih super ini gak usah lagi nah paling yang kita kasih itu bentuknya adalah first name last name nah first name ini last name ini errornya karena dia butuh maunya di lowerel cas jadi ini bikinnya kayak gini ya Eh sor first name first name terus name- juga last name Mak gitu Ini disuruh pakai string interpolation Nah ini kan sebenarnya ini benar bisa tapi kita disuruh pakai string interpolation kita ganti repace nah bentuknya jadi kayak gini first name spasi last name udah deh jadi dah kar kan jadi ini adalah e model kita Nah model kita itu kita perlu from Jason from jason-nya sama to jason-nya ini buat mempermudah ya jadi dari database itu bentuknya kan kayak gini nih nah kita cuman butuh yang ininya doang nih maka dari itu kita akan bikin from json to jason-nya di sini from json itu kita akan ngfectory teman-teman kita akan ngeevectory sebuah profile modal model ini kita eh bikin namanya from json gitu ya Nah seperti ini kita akan return profile modelnya Oke seperti ini ya Nah di sini kita bakalan nampung nih dari data json kita akan dapatin data seperti ini ya kita akan bakalan dapat data seperti ini makanya kita akan pasang dia sebuah mapping string dinamic ini adalah data json-nya ya data json ini nanti berupanya seperti ini data json Nah kita mau ngambil datanya aja nih kita mau ngambil datanya aja ya yang di sini kita mau ngambil datanya aja maka dari itu Eh kita bisa di sini kita ambil datanya ya jadi nanti ini berupa string Dynamic di sini berupa data datanya aja di sini data data yang ini nih data ini berupa json juga kan mapping string Dynamic juga jadi ini kita bisa ambil di sini kita tangkap jadi data json yang ini itu full full keseluruhan dapat dari database kemudian kita ambil datanya aja kalau misalnya kita sudah ambil datanya aja kita bakalan dapat data yang ini data ini baru kita convert ke bentuk model kayak gitu Nah jadi data ini kita ambil dari data Id ini Kita samain ya data Id ini data email tergantung dari sini namanya email Sori email email first name-nya juga kita ambil data first name ini samain ya dari database first name kemudian data last name di sini ada last name kemudian Avatar ya di sini Avatar ini kita copy di sini ya sama ya Avatar ya sama nih yaudah ini kita udah tampung datanya Nah ini kita udah jadi nih from jasonnya jadi data dari data Jason berupa kayak gini kita mau ngambil datanya aja datanya Ini yang berupa json juga mapping string Dynamic kita akan convert dia ke bentuk objek makanya di sini kita factory factory itu pembuatan ya pabrik pabrik jadi kita akan ngbil si profile model ini nah udah nih udah jadi nih from jonnya sekarang kita bikin jonnya jonnya itu dia akan mengconvert kalau from Jason itu akan ngconvert dari mapping ya dari berupa mapping kita akan convert menjadi sebuah objek profile mod misalnya to json maka kita akan ng-convertnya kebalikannya ke berupa mapping Nah kayak gini ya Jadi kita akan nanti tipe datanya profile ini kita eh sori mapping string Dynamic maka kita akan ng Return sebuah mapping ya sebuah mapping kayak gini nanti ada tipe datanya ID kita kasih aja id-nya tuh Dari mana Oh id-nya dari sini ya ID this ID ID unneary kita remove this udah kayak gini ini id-nya kemudian email kemudian kita ambil first name mungkin kita akan convert first name kayak gini ya first name kita akan balikin lagi Ini ambil dapat dari sini sini ada last name kemudian ada Avatar ya avatar avatar jadi nih Nah ini adalah to json map-nya udah kelar nih ya ini adalah model kita jadi kita udah menyiapkan eh menghandle kalau data dari database itu kita akan ubah ke bentuk model ke bentuk objek ya Yang mana objek ini kita kasih juga datanya buat ke orang tuanya jadi nanti udah ada datanya semua tuh ya Jadi kita udah bikin udah nge-handle from Jason to Jason oke udah kelar nih model kita udah punya terus kita mau bikin apa lagi kita jangan langsung bikin repository tapi kita bikin data source-nya dulu teman-teman data source ini apa Jadi tadi kan kita sumbernya itu dari internet ya jadi data source ini kita bisa ada dua nih cabangnya nih data source itu ada dua Bisa dari internet di sini internet atau dari back end ya internet ini back end dari backend-nya dari server ya backend internet backend atau server kita sebutnya server ini online sifatnya ini online ya ini sifatnya online nah terus tapi kalau misalnya kita gak punya internet kita ngambil data dari mana Kan bisa juga dari data snya itu bisa juga offline teman-teman sini ya kita taruh sini aja dah jadi bisa juga dari lokal ya ini kita ambil dari local database local DB local database gitu ya ini sifatnya offline jadi kalau enggak ada internetnya kita ambil datanya itu data yang terakhir gitu ya ketika kita mau ng-refresh tampilan tapi kita enggak bisa dapat data dari internet karena internet kita eh enggak working gitu ya maka kita ngambil data dari dari lokal aja yang data terakhir gitu ya Nah ini juga bisa jadi data source ini adalah kita ngambil dari mana sumbernya namanya juga data source ya Sumber data itu dari mana Apakah dari internet ini juga bisa nih dari berbagai macam backend gitu ya Misalnya kita ambil data source lagi dari dari server yang lain gitu ya Enggak cuma di sini server S ini server S misalnya backend server S ini server du gitu Nah ini bisa nih kita gabungin Entar jadi data source ini kita akan ambil dulu data-datanya kalau misalnya kita sudah tampung baru kita combine semuanya misalnya kita butuh misalnya gini ini ada data nih ada data profile ada id email namanya sama Avatar tapi buat dapatin alamat si Janet ya si Janet ini kan punya rumah misalnya dia Alamatnya di mana Tapi dia ngambil alamatnya bukan dari server yang ini dari server kedua gitu nah bisa nih misalnya di sini ini buat ngambil alamat ya ini misalnya misalnya aja nih ini buat data profile nah misalnya yang ini Ini buat ngambil data address misalnya ya data address jadi ini kan beda nih beda server ya ini beda server itu juga bisa jadi kita tampung nih kalau yang ini kita ambil dari e server S data alamatnya kita ambil dari server du misalnya dia punya data apa lagi gitu data keluarga di sini family Yaudah ambil dari server ketiga itu bebas jadi data source ini mau sumber dari data mana aja juga bisa Mau lokal lokal mungkin dari hp-nya doang ya cuman satu dia dari hp-nya dia doang Ya mungkin Lal kalau buat lokal cuman satu tapi kalau dariotnya ini database ini kita sebut dengan remote database online ya itu bisa dari berbagai sumber tergantung kita punya data source itu data sourcnya Berapa banyak gitu kalau kita punya cuma satu server Ya udah Ambilah dari server satu aja kalau kita punya 1000 1000 server Ya udah nih kita ngambil datanya dari bermacam server itu bisa ya Jadi kita bikin Gimana caranya bikin data source ini Oke kita udah punya modelnya kitaudah udah punya udah siap domain udah punya model sekarang kita bikin data source-nya data source ini kita bikin server satu lah ya Misalnya server sat eh data source gitu ya server sat ini online ya ini online online.dart gitu ya server 1 online.dart tapi biasanya penamaan ini Eh saya bisa biasa sebut sebagai remote sih kita sebut sebagai remote aja deh remote data source gitu ya remote data source Nah di sini remote data source itu kita akan bikin sebuah kelass jadi ini di sini ada profile karena ini fitur profile jadi saya namain profile remote data source Oke seperti ini profile remote data source Nah di sini kita punya function apa aja gitu ya biasanya saya itu bikin abstraknya dulu ya jadi konsepnya sama sama kayak rep Story kita bikin abstraknya dulu abstrak class di sini kita sebut sebagai profile remote data source ya Kita akan ambil apaan aja dulu misalnya kita akan ini konsepnya sama ya kita akan bisa ngambil single user ini konsepnya sama sama kayak yang di domain repory ini sama konsepnya ini kita copy aja aja ini kita copy tapi dia enggak ngembaliin kanan atau kiri karena dia m karena dia berhubungannya dengan database sebenarnya bisa kanan atau kiri tapi kalau misalnya di sini enggak terlalu perlu dia ngembaliinnya langsung aja profile model nah ini profile modelnya tapi karena dia mengambil semua data profile data user berarti di sini berupa list ya berupa list profile model Nah kalau di sini cuman satu satu user berarti di sini profile model aja nah ini abstrak kassas kita nah kemudian kalau kita udah punya abstrak kita bakalan bikin implementasinya jadi di sini kita bikin kelass profile remote data source implementasi implementation tapi di sini mengextend abstrak kas ini kayak gitu ya Nah di sini kan error merah kita benerin aja dulu kita benerin katanya di sini dua overright nih missing Nah di sini adalah dia dibikin function-nya untuk nge-get user nge-get semua user sama function buat nge-get usernya jadi lebih rapi nih kita bikin abstraknya dulu Ini buat yang simpel bakalan ada function apa aja nanti di implementation classnya bakalan kita proses ngambilnya dari mana di sini Toya ini kita ngambil dari mana ini kita cara ee Ini gimana caranya kita ngambil semua usernya gitu ya Nah di sini kita akan ngambil semua user itu dari sini teman-teman rerest in kita ambil semua user dari sini api-nya page 1 misalnya page 1 Nah ini urlnya nih jadi kita ambil dari URL sini page-nya tergantung page-nya di sini ya Nah url adalah itu berarti kita bikin kita perlu ee http request ya Jadi kita tambahin package http di sini ya Ini penting juga ya package http atau teman-teman mau pakai Dio juga boleh dia itu e alternatifnya ini ada http atau Dio Ya terserah ini sama-sama buat ee request http request bebas terserah teman-teman pakai yang mana Oke kita lanjut lagi di sini Kita akan ambil data seperti ini get all user kita udah punya url http eh package package http sor kita bikin dia seperti ini http titik get Nah kita get dari url-nya tipenya Yuri kita gak bisa langsung kasih string nih tergantung ya di sini butuhnya tipenya Yuri jadi di sini kita gak bisa kasih langsung url kayak gini kita harus convert dulu nih ke bentuk Yuri ini adalah url-nya Yuri tik pars Nah ini baru kita pars kayak gini jadi string url-nya kita akan convert ke bentuk Yuri dulu Nah ini baru kita Panggil di sini nah udah jadi page-nya ini kan tergantung dari dari sini ya Jadi kita Panggil page-nya di sini ini Dynamic berarti page 1 atau du atau t dan seterusnya gitu oke seperti ini ya ini kita buat dia sebagai asinkronus karena kita harus tungguin dulu respon dari sini ini adalah responsnya nah tergantung nih responsnya itu berupa apa nih kalau kayak gini kalau kita nge-hit Fi ini nge-hit url ini maka responnya akan bentuknya kayak gini nih responnya akan bentuknya kayak gini panjang ya panjang banget nih Nah cuman kita mau cuma Ngambil ininya aja kita mau ngambil apa namanya data ini nih ya data data berupa list Ini tipenya kayak gini maka kita akan ambil di sini respons kita ambil datanya aja nih teman-teman ambil datanya aja ini berupa list ya berarti di sini Oh responsnya kita ambil body-nya dulu ini kita ambil bodyd-nya bodyd-nya berupa string ya jadi nanti kita dapat bodyd-nya seperti ini berupa string ya berupa string kayak gini string lah pokoknya dia bukan berupa data json Jadi kita perlu decode dulu ya json Decode kita akan ubah bentuk string itu ke bentuk mapping string dnamic nah ini adalah datanya data body dat body nah seperti ini ya data body ini nanti akan dapat seperti ini data-datanya cuman yang kita mau kita ambil datanya aja nih data di sini ya maka di sini kita akan pasang berupa datanya aja ya kita ambil dari data body kita ambil datanya aja nah ini tipenya apa tipenya itu data Ini tipenya list ya ini ada list 1 list 2 list 3 dan seterusnya maka di sini tipenya kita pasang list ya data list data list dalamnya apa dalamnya itu berupa mapping lagi ya mapping ini maka kita list mapping string damic inih Oke sip Nah ini adalah datanya jadi udah berupa list dari kayak gini nih nah data ini kita convert dulu biar dia bisa jadi list profile model berarti di profile modelnya ini kita bikin eh dari bentuknya list mapping ya list mapping maka kita akan convert ke bentuk list profile model nah ini kita bisa sebut sebagai from Jason list ya from Jason list Nah kayak gini from Jason list ini kita buat statik aja statik itu bisa buat keluar ya nanti tipe datanya akan menjadi list profile model hasilnya Nah nanti di sini kita akan buat dia berupa datanya ini datanya ya jadi di sini kita akan cek dulu data ini empty apa enggak Kalau empt kita akan return seperti ini list kosong aja tapi kalau enggak empt ya kalau enggak empt berarti kita akan ubah dia menggunakan map kita akan ubah dia ke bentuk ke bentuk apa nih ke bentuk ee profile model jadi setiap elemen ini ya ini ibaratnya kayak gini kita punya data ini kita looping ya kita ibaratnya kita bikin for for looping ini tergantung datanya ya banyak datanya nanti kita akan data ini ya Sesuai dengan indeksnya dia kan bentuknya kayak gini ini indeks pertama ini data kedua nih Ya tipenya berupa mapping nih ya Jadi kita kita udah punya ini data mapping ya string damic ini berupa data ini jangan data lagi deh ini adalah single datanya single data profile nah single data profile ini kan bentuknya kayak gini masih mapping nah ini akan kita convert ke bentuk model jadi kita Panggil ya profile model from json ini kita Panggil profile model from Jason kita kasih data jasonnya di sini single datanya Nah ini kita bakalan dapetin seperti ini kita kita bikin list list kosong dulu ya list profile model ini all datanya berupa masih kosong all data ini kita akan pasang di sini tambahin aja nih si datanya Nah seperti ini jadi datanya itu kita tambahin ke dalam sebuah list nanti listnya yang akan kita return sini all datanya konsepnya seperti ini ya bisa pakai list Eh bisa pakai looping ini opsi pertama opsi kesatu menggunakan l eh for Loop ya atau opsi kedua menggunakan kedua menggunakan functionmap Ya seperti ini kalau saya biasanya pakai opsi kedua karena lebih simpel penggunaannya yaitu dari data damicnya kita akan mapping tapi kita akan ubah ke bentuk list lagi nah setiap elemen ini E ini E itual single datanya jadi inisung kita pasang kayak gini aja Nah ini e-nya ini ini kita ibaratnya single data profil-nya yang di sini Ya udah ini kita berupa kita langsung return aja nih kita langsung return seperti ini ya Jadi kalau mau pakai list e pakai for Loop kayak gini tapi kalau mau opsi kedua langsung satu baris kode kayak gini juga bisa ya terserah teman-teman ini mau pakai yang mana Kalau saya biasanya pakai yang ini itu lebih simpel ya ini opsi kedua aja nih pakai dotmap kita ubah ke bentuk list nanti dia tipenya juga udah jadi l profile jadi lebih simpel Ya udahlah kita pakai opsi kedua aja ini teman-teman terserah ini mau pakai yang ini atau pakai yang ini tapi saya saranin pakai yang ini aja biar lebih clean gitu ya kode kita oke nah jadi kayak gini nah jadi lebih simpel ya Jadi kita udah punya nih from Jon l jadi bentuknya dari data kayak gini data list data list kayak gini kita akan convert otomatis ya kita panggil aja function from Jason list jadi di sini ketika kita sudah punya datanya berupa list mapping maka kita bikin profile model titik from json list kita lempar data yang ini berupa list mapping-nya ya ini akan menjadi sebuah list model jadi ini langsung kita return aja nah udah jadi Kak gitu Ya udah deh ini adalah codingan kita buat implementasi datanya Nah sebenarnya di sini kita enggak usah langsung nyiapin bentuknya data jadi kita buat single user ya nanti buat single user buat single user kita ggak usah nyiapinnya di modelnya tapi kita tampung aja kita langsung ngambil dari sini aja Oke gini dulu deh Itu buat yang list Sekarang kita coba langsung implementasi di sini buat ngeget single usernya Kalau single user itu urlnya adalah kayak Gin urlnya beda ya tapi dia berdasarkan id di sini sini berdasarkan ID nah kayak gini ini urlnya kita get dia but dia but kan asinkronus dapat respon ya responnya bentuknya Nanti kayak gini dari database Nah kita ambil datanya ya Jadi terserah kita ambil datanya di sini tipenya nanti akan udah bukan list lagi tapi dia single e user jadi di sini bukan list lagi ya jadi berupa data biasa kita udah ambil di sini jangan from Jason l tapi from Jon datanya kasih di sini nah karena kita udah ambil datanya jadi di from jasonnya ini udah enggak perlu data lagi nih kayak gitu Jadi ini langsung berupa datanya aja jadi lebih clear ya Jadi kita ngambilnya dari sini nih datanya datanya berupa single kayak gini mapping ini kita kita udah bongkar di sini maka kita langsung kirim aja ke sini kalau udah dikirim entar dia langsung dibikinin dijadiin sudahudah jadi nih yaudah ini adalah eh bikin remote data source kita Udah punya ya implementasinya di sini nah ini rapiin dulu nih fix import udah jadi ini contoh url-nya enggak usah kita taruh di sini biar lebih bersih Nah udah jadi udah selesai Ini adalah remote data source kita kita ngambil data all user itu kayak gimana ngambil user biasa tu kayak gimana Kalau mau testing testing juga bisa ya jadi setelah kita udah bikin remote data source biasanya ini saya bikin testingnya jadi ini kita hapus aja Wi testing gak perlu kita bikin di sini test.dart ya sini bikin aja void main ya di sini asinkronus kita import http shttp ya ini kita testing kita bikin dari remote data source ini ya implementationnya sini profile implementation profile implation Nah jadi ini ya Jadi kita impor kita udah bikin ohakak di misalnya udah kita jalanin get all user page 1 misalnya nah ini bakalan menghasilkan variabel misalnya respons ini apa sih hasilnya gitu ya kita akan print responsnya hasilnya harusnya berupa list dari profile model nah ini kita Run aja kita Run Oke sebentar ini kita Run dibak Run di Chrome kok Run di Chrome ya harusnya di sini aja nih baran dulu ini test.dart ya harusnya enggak usah di sini kita cuman mau ngambil ini aja sih sebenarnya nah ini tipenya list profile model udah benar ya Nah ini sebenarnya salah nih jadi jangan mungkin ini penamaannya aja kali ini tes my test lah my test ya Bisa enggak my test My test kita coba Ran launching juga ya tapi intinya adalah responsnya ini udah udah dapat nih di sini ada di terminal di output di dibug nah ini feature list profile model kalau kita mau ngambil datanya apa aja kita bisa kita bisa looping dia for elemen di dalam respon ini respon ini berupa future berarti ini kita wait dulu ya harnya kita await dulu ini dapat datanya setiap elemen ini kita print elemen Eh tu jonnya nah kita akan Print ini kita running lagi coba Oh ini udah diunning kita restart mana dia instant json list Dynamic is not tipenya bukan ini ada kesalahan nih berarti nih l lnya tuh dinamic bukan list mapping string Dynamic jadi kesalahannya ada di model ya di sini ada masalah nih ya ini jadi Kelihatan nih ya jadi di di bagian sini ketika kita get all user tipe di sini itu berupa mapping udah kita ubah tapi di sini data ini berupa list Dynamic ya list Dynamic katanya nah list Dynamic di sini nah kalau misalnya di sini list Dynamic bukan list mana tadi kita coba restart bisa enggak dapat datanya kita restart ini masih launching launching aja inih hm ini kita stop dulu deh Ini launching apa ya apa yang tadi ya ini kita stop dulu ini coba kita clear ini kita coba Run lagi Mana tadi testing tesnya ini kita Run kita coba cek ya dapat enggak nih data-datanya kalau misalnya dapat berarti sudah berhasil sini oke nah Ini udah udah berhasil nih berarti ee data source kita udah bisa nge-get nih semua usernya udah bisa ke-get datanya aman berarti ya Nah kalau misalnya ini udah berhasil berarti codingan kita nih buat nge-get data source-nya aman buat yang get all user Nah sekarang kita mau nge-get respon single user ya ini kita responnya kita ambil yang get satu usernya aja ini ID 1 misalnya kalau id 1 Berarti kita enggak perlu looping lagi kita langsung aja print respon ini berupa profile model kita tujasan aja kita start dapat gak dia ni kita coba restarth Bentar ini masih Kayaknya masih ini ya kita perlu Run ulang bisa gak nih dapetin single usernya ini udah ber apa belum Kalau misalnya error kita benerin dulu kita cek dalamannya kita akan cek di sini data S ID S dapat gak nih oke dapat aman berarti ya berarti kalau misal udah kayak gini data source kita udah aman udah berhasil udah clear kita ya Oke kalau misalnya ini udah berhasil dua-duanya udah kita tes udah aman ya berarti kita lanjut lagi bikin apanya ya jadi data source kita tadi kita bikin udah bikin eh data source online-nya ya online-nya ini kita sudah bikin ya data source online ini udah bikin nah sekarang kita coba Bikin database lokalnya deh ya database lokalnya nanti untuk database lokal di sini kita bikin lagi ya konsepnya sama Ini lokal kita ganti aja ini local data source nah ini kita ganti jangan remote data source tapi profile local data source sama dia bakalan ngambil semua user sama ngambil single user cuma dia bukan dari enggak usah pakai http karena dia sumbernya bukan dari sini gitu ya Nah sumbernya bukan dari situ yang ini juga url sumbernya dari mana Bukan Dari situ Ini sumbernya dari lokal data source kita penyimpanan lokal itu teman-teman bisa menggunakan macam-macam ya package-nya ya bisa pakai hve ya di sini bisa pakai hve ini juga nih populer juga nih 5000 like nih atau pakai set preference ini juga bisa nih pakai set preference 8.000 ya atau pakai es FL ini juga bisa pakai yang ini 4.000 terserah kita akan coba satu ya h pakai h aja h aja nih Kenapa karena dia lebih cepat dia lebih lebih cepat ya memorinya memorinya performanya lebih cepat jadi kita pakai hve kita instal aja hve-nya kita tambahin hve-nya kalau misalnya kita udah kita import ya import hve D ya Ini udah ada cara penggunaannya Gimana cara penggunaannya ya kayak gini simpel ini buat ngeputnya ini buat getnya jadi kita bikin bxnya dulu ya kita bikin box di sini kita bikin box Ini namain aja profile box ya Nah ini bnya habis sudah box kita dari boxnya itu Box titik get datanya get all user misalnya get all user Nah ya udah ini kita akan dapat datanya kita return aja udah simpel kayak gini nah boxnya ini buat single user juga sama get single user berarti get user gitu ya udah nih caranya kayak gini nah cuman ini sama nih boknya tuh sama-sama dari nih berarti enaknya ya betternya itu kita Panggil di sini final H box ya HP apa nih hyp object Hnya ini kita panggil kayak gini oke di sini kita required this d Oke ini kenapa gak boleh konstan ya gak boleh konstan H ini kita ambil di sini h titik box kayaknya bukan H object H apa nih object storage collection apa ya interface interface oke nah Ini nama boxnya ya profile box Oke sip Nah ini juga kita ambil dari Hnya jadi objeknya itu sama nih dariiamb secara general udah udah jadi nih Ya udah ini kayak gini doang nih ya ini lookal data sourcenya Nah sekarang kita akan m bikin apanya ya kalau misalnya local data source sudah selesai udah kita get kita bikin step selanjutnya bikin rep Stories implementation-nya oke di sini sekarang bikin Rep terus implementation dia itu kita penamaannya sama sama kayak di sini yaitu profile repository tapi kita tambahin implementation ya jadi di sini kita bikin aja file profile repositories repository implementation implementation.dart nah ini adalah merupakan sebuah kelas profile implementasi dari abstraknya ini sama nih ya sama namanya tapi kita tambahin implemenation kita extend dari parent-nya ini ya karena kita extend ya ini kita eh ada bohlam mana bohlam kok bohlamnya Enggak ada oh ini quick fix du override dia butuh ini fix import nah ini kita bakalan implementasinya di sini ngget all user dari profile ini function ini ini gimana caranya buat nggeter nah ini ada dua nih ya di sini bisa kita cek dulu cek internet nih cek internet ya di sini di repository implementation ini kita akan bikin logicnya di sini ya di sini akan kita akan bikin Min ini kita akan cek internet ya ini kita mulai start kemudian kita akan cek ini internet sini cek internet cek internet gitu ya Ada enggak nih ya itu jadi dari sini kita akan cek dulu internetnya kalau misalnya internetnya ada ya yes gitu ya ya Oh ada nih internet maka kita ambilnya itu dari dari remote data source kita ambil dari sini gitu Tapi kalau enggak ada internet kalau enggak ada internet di sini no maka kita ambil dari lokal data source ya logiknya simpel ya ibaratnya ya ini logiknya simpel kita ada internet apa enggak nah buat ngecek Internet itu banyak packageennya ya kalau saya biasanya pakai connecttivity plus nah ini biasanya pakai ini nih Nah biasanya pakai ini nih kalau saya ngecek internet nih jadi di sini teman-teman ini package yang lumayan berguna juga ya Ini yang ke conctivity plus ini buat ngcek konektivitas ya jadi di sini ngecek internetnya bisa pakai Apun ya Network checker juga bisa ada kayaknya Network checker Network checker kalau gak salah Network checker Oh connectivity checker ini juga bisa atau ini atau yang lain lah banyak ya buat ngecek koneksi itu banyak tapi saya biasanya pakai ini connectivity plus ini support juga buat Android iOS nah ini udah lengkap sih ini udah gede banyak juga popularitasnya juga 100 nih bagus cara ngeceknya gimana ya udah nih cara ngeceknya gini ini kita bikin kita impor dulu di sini nah terus caranya adalah kita bikin connectivitynya di sini ya cek internet di sini kita bikin duluah ini but kita butuhonusity DII kita ngeceknya kayak gini kondisinya kondisinya ada banyak nih kalau dia koneksinya mobile wi-fi ini internet available available ethernet juga available bluetooth mungkin bisa koneksi pakai bluetooth atau nan nan ini no available berarti konsepnya adalah kayak gini aja jika ini no available Network ya else berarti dia available ya gitu aja simpelnya ya jadi kita enggak usah ngecek dia pakai koneksinya pakai mobile pakai wi-fi pakai internet Terserah dah Yang jelas adalah kalau misalnya dia eh connectivity result-nya n berarti dia Ini enggak ada Network enggak ada internet Ya no internet no Network ya kalau di sini ada berarti di sini kita ngambilnya dari dari mana ya kalau di sini ngambilnya ngambil dari lokal kalau dari yang ini ngambil dari remote data source lokal data source ini nah ini ngambil dari lokal ini ngambil dari remote ngambil dari lokal atau remote ini kita impor dulu ya si itunya ya siapanya data source-nya remote data source profile remote data source ini kita impimport dulu sama kita ambil profile local data source-nya kita impimport dulu di sini ya kita pasang di sini Dis do Dis dot remote nah ini kita pasang konstan bisa enggak Oh enggak bisa gak apaapa Yaudah jadi kayak gini nah kalau ngambil dari dari lokal berarti kita ambil dari lokal ini ya titik ambil get all user Ah ini pagenya dari sini ini kita akan wait dia dapat datanya list profile model Nah karena dia kanan atau kiri berarti di sini kita cek di sini berupa hasilnya itu list profile model ya ini list profile model di sini adalah eh hasil ya Nah hasilnya ini kita akan return karena dia sebelah kanan maka kita di sini kasih lemparnya return right hasil gitu ya return right hasil Nah di sini juga bagusnya itu bisa pakai tambahin try and Cage ya teman-teman try and Cage jadi kita akan coba ini Kita masukin ke dalam trynya kalau C error maka returnnya itu left ya eror nih erornya Apa nih yaudah kita kasihureah Kay gitu Oke Paham ya di Dar di profile remote data source dapat nanti WR hasilnya write hasil dahah selesai apaagi ada yang error lagi Enggak Hah di sini Kenapa override-nya error nih wighten ini apa nih coba coba coba konstruktor Oh ini kita kurang titik dua Nah sip nah udah jadi nih ya Jadi ini adalah eh implementasi profile refesory kita kita cek internetnya kalau misalnya enggak ada internet kita ambil dari lokal kalau ada internet kita ambil dari remote tapi jangan lupa kita kan ngambil lokal juga kan di sini kita ambil lokal ya Misalnya kita get all user ngambil lokal kan dari bok ya dari bok nah boknya ini ketika kita punya internet kita jangan lupa kasih ke boknya ya kasih ke boknya kita Put Put Put data last data ya Put last data profile ke box nah ke box h-nya ke box lokal gimana caranya ya udah ini cara yang sama kayak tadi cuman kita Put ya jadi di sini kita butuh final High H apa interface ini Hnya ini juga butuh H ya sini kita pasang H Ti bxnya sama ya boknya Kita samain gak boleh beda ya jadi boknya Kita samain mana di sini boknya profile box namanya ini variabelnya kemudian Dar itu put put datanya key key-nya itu Kita samain juga get all user di sini key-nya jadi key-nya itu get all user datanya itu adalah hasil Ya udah lu jadi nih Nah udah jadi kalau misalnya udah jadi kita akan ee lanjutin lagi di sini kita lanjutin lagi ini sudah selesai ya ya Nah ini kita tinggal copy aja nih kita pasang di sebelah sini kita buat asinkronus ini udah ngecek juga kalau udah ngecek ini kita ambil bukan get all user tapi get user berdasarkan ID ya Nah dia mereturn profile model di sini enggak ada listnya ini langsung hasil ya di sini ini juga berupanya list doang kita ambil get user biasa ini id-nya nah ini kita ambil kita Put jangan get all user sesuain aja dengan get user Ini pakainya get user ya jadi di sini get user dahah selesai Oke kelar nih ini adalah profile implementation kita ni Rapin dulu nah udah jadi nih jadi kita udah bisa nih udah kar nih jadi idenya adalah di sini kita udah selesai ini udah dan ya Ini udah done data layer kita jadi dari data source ini sumbernya dari mana ya sumbernya itu dari internet kah atau dari lokal itu bebas ngambil datanya dari mana Ini hubungannya di sini nih di data source n data source ini kita bakalan e manggil repository-nya sebenarnya repository ini kan abstraknya Ya nah ini implementasinya Jadi itu dia ada hubungannya jadi ketika use case ini dipanggil dia akan manggil fungsi dari repository biasa ya jadi di dalam domain ini di dalam domain ini ini ada repos Story ini kan baru abstraknya doang nah implementasi dari abstrak ini itu adanya di data layer di sini di reposory ini karena dia mengextend parent parentnya Jadi sebenarnya dari use case ini pas dipanggil cas-nya dia akan manggil abstrak CL yang mana abstrak CL ini diimplementasinya di sini nah itu ya jadi di sini hijau ya Ini hubungannya ya ini kita garis putus-putus saja ya jadi ketika cas ini dipanggil get all user dipanggil kasnya dia bakalan manggil Story ini abstraknya abstraknya diimplementasi ada di sini ketika dia di sini dia ngambil dia udah siap nih nah data source-nya ngambil dari mana ya jadi di repository implementation dia ngecek dulu internetnya internet ada apa enggak Kalau misalnya dia kalau misalnya dia ada berarti ngambilnya dari remote kalau dia enggak ada ngambilnya dari lokal nah kayak gitu Nah nanti datas ini bakalan ngembaliin modelnya itu ya Model itu berguna untuk ini ya di data source ini buat from Jason to Jason ya sini user from Jon to Jon ini Gunanya buat di model ya itu konsepnya kayak gitu ya tem-eman jadi kita udah berhasil bikin domain layer kita udah berhasil bikin data layer oke itu Sisi data layer sudahudah Seles video kita ak kita data ini bisa enggak ditampilin di UI kita di presentation layer kita itu kita akan eh lanjut di video Selanjutnya aja