Flutterda ranglarni belgilashda, 0xff.. dan boshlanadi, "ff" qanday qiymat ekanligi haqida ajoyib maqola
https://sharipovshohruh1106.medium.com/did-you-know-flutter-version-d6ddf0e7f130
https://sharipovshohruh1106.medium.com/did-you-know-flutter-version-d6ddf0e7f130
Medium
Did you know? Flutter version
Barchamiz Flutterda widgetlarimizga color berayotganda Color(0xff…..) dan foydalanamiz. Mana shu yerdagi ff nimaligini ko’pchilik o’ylab…
✍1
Flutterda WASM haqida.
Flutter C++ tilida yozilgan 2D grafik kutubxonasi Skia bilan yaratilgan. Flutterning Skia engine unga turli platformalarda, jumladan, web-da portativ va samarali ilovalar yaratish imkonini beradi.
Ko'pgina veb-brauzerlar JavaScript tilini tushunishadi, ammo, Skia C++ API veb-brauzerda WebAssembly orqali ishlashi mumkin. WebAssembly (Wasm) nativ kodni brauzer tushunadigan tilda kompilyatsiya qilish orqali brauzerda ishlashiga imkon beradi.
Wasm past darajadagi til bo'lib, u deyarli nativga yaqin unumdorlik (performance) bilan ishlaydi. Bu yuqori darajadagi tillar uchun kompilyatsiya bo'lishga mo'ljallangan ixcham ikkilik formatga ega virtual stek mashinasi.
Wasm dasturchilarga brauzerda ishlaydigan C, C++, Rust, Dart va boshqa yuqori darajadagi tillarda kod yozish imkonini beradi. Wasm yuqori darajadagi tilda yozilgan kodni Wasm modullariga kompilyatsiya qiladi. Keyin ular veb-ilovaga yuklanadi va JavaScript bilan chaqiriladi.
JavaScript brauzerlar tushunadigan asosiy til bo'lib kelgan. Biroq, 3D o'yinlar kabi resurs talab qiladigan ilovalarni ishga tushirganda, JavaScript sust bo'ladi. Bunday ilovalar uchun nativga yaqin tajriba talab qilinadi.
Wasm ilovalarimiz uchun deyarli nativ tezlikni ta'minlash uchun JavaScript bilan birga ishlaydi. Modullarning kichik o'lchamlari tufayli Wasm tezroq yuklanadi va ishga tushadi, bu esa Webda yuqori samarali ilovalarni ishga tushirish imkonini beradi.
Wasm bizga tez, samarali, portativ va xotira uchun xavfsiz ilovalar yaratish imkonini beradi. Bu nafaqat webda, balki boshqa platformalarda ham ishlash uchun mo'ljallangan ochiq standartdir.
WebAssembly ikkita fayl formatiga ega :
.wasm: ikkilik formatda assembly kodini o'z ichiga oladi va ishga tushadigan fayldir.
.wat: ".wasm" faylining inson o'qiy oladigan matn formatini o'z ichiga oladi va ".wasm" ga kompilyatsiya qiladi. Bu faqat tahrirlash yoki tuzatish uchun mo'ljallangan.
Manbalar :
1. Official doc : Link
2. Medium : Link, Link, Link
3. WasmGC : Link, Link
#Flutter
Flutter C++ tilida yozilgan 2D grafik kutubxonasi Skia bilan yaratilgan. Flutterning Skia engine unga turli platformalarda, jumladan, web-da portativ va samarali ilovalar yaratish imkonini beradi.
Ko'pgina veb-brauzerlar JavaScript tilini tushunishadi, ammo, Skia C++ API veb-brauzerda WebAssembly orqali ishlashi mumkin. WebAssembly (Wasm) nativ kodni brauzer tushunadigan tilda kompilyatsiya qilish orqali brauzerda ishlashiga imkon beradi.
Wasm past darajadagi til bo'lib, u deyarli nativga yaqin unumdorlik (performance) bilan ishlaydi. Bu yuqori darajadagi tillar uchun kompilyatsiya bo'lishga mo'ljallangan ixcham ikkilik formatga ega virtual stek mashinasi.
Wasm dasturchilarga brauzerda ishlaydigan C, C++, Rust, Dart va boshqa yuqori darajadagi tillarda kod yozish imkonini beradi. Wasm yuqori darajadagi tilda yozilgan kodni Wasm modullariga kompilyatsiya qiladi. Keyin ular veb-ilovaga yuklanadi va JavaScript bilan chaqiriladi.
JavaScript brauzerlar tushunadigan asosiy til bo'lib kelgan. Biroq, 3D o'yinlar kabi resurs talab qiladigan ilovalarni ishga tushirganda, JavaScript sust bo'ladi. Bunday ilovalar uchun nativga yaqin tajriba talab qilinadi.
Wasm ilovalarimiz uchun deyarli nativ tezlikni ta'minlash uchun JavaScript bilan birga ishlaydi. Modullarning kichik o'lchamlari tufayli Wasm tezroq yuklanadi va ishga tushadi, bu esa Webda yuqori samarali ilovalarni ishga tushirish imkonini beradi.
Wasm bizga tez, samarali, portativ va xotira uchun xavfsiz ilovalar yaratish imkonini beradi. Bu nafaqat webda, balki boshqa platformalarda ham ishlash uchun mo'ljallangan ochiq standartdir.
WebAssembly ikkita fayl formatiga ega :
.wasm: ikkilik formatda assembly kodini o'z ichiga oladi va ishga tushadigan fayldir.
.wat: ".wasm" faylining inson o'qiy oladigan matn formatini o'z ichiga oladi va ".wasm" ga kompilyatsiya qiladi. Bu faqat tahrirlash yoki tuzatish uchun mo'ljallangan.
Manbalar :
1. Official doc : Link
2. Medium : Link, Link, Link
3. WasmGC : Link, Link
#Flutter
✍1
Flutter dasturimiz uchun Backend va Server servislar.
Serverpod.
Serverpod bu Dartda yozilgan ochiq manbali, kengaytiriladigan dastur serveri boʻlib, Flutterning tajribasini server tomoniga olib kirish uchun moʻljallangan. Bu dasturchilarga Dart-dan butun stek bo'ylab foydalanish imkonini beradi, bu esa server va mijoz o'rtasida kod almashish imkonini beradi, shu bilan rivojlanishni soddalashtiradi va samaradorlikni oshiradi.
Firebase.
Google tomonidan support qilinadigan Firebase bu Flutter bilan muammosiz integratsiya bo'ladigan mashhur "Backend as a Service" (BaaS) hisoblanadi. U real vaqtda ma'lumotlar bazalari, user autentifikatsiyasi, xosting va bulut funksiyalarini o'z ichiga olgan bir qator xizmatlarni taklif etadi. Firebase real vaqt rejimida ma'lumotlarni saqlaydigan va sinxronlaydigan JSON-ni qo'llab-quvvatlaydigan NoSQL ma'lumotlar bazasi bilan tanilgan va bu ko'plab Flutter ilovalari uchun ishonchli tanlovdir.
Backendless.
Backendless - bu Flutter veb-ilovalari hamda Android va iOS mobil ilovalarini qo'llab-quvvatlaydigan no-code/low-code backend xizmati. U real vaqtda ma'lumotlar bazasi, user boshqaruvi va fayllarni saqlash kabi keng qamrovli funksiyalar to'plamini taqdim etadi.
Parse Server.
Flutter ilovalarini ishlab chiqish va joylashtirish uchun ishlatilishi mumkin bo'lgan ochiq manbali backend framework. U bir nechta frontend texnologiyalarini qo'llab-quvvatlaydi va to'liq ilovalar to'plamini taqdim etadi, bu uni turli platformalar, jumladan, veb, mobil va IoT uchun ko'p qirrali variantga aylantiradi.
PocketBase.
Dart-da veb-saytlar yaratish uchun zamonaviy veb-ramka bo'lib, u Flutterga o'xshaydi, lekin server tomonida renderlashni qo'llab-quvvatlaydi. Bu autentifikatsiya, sahifalash (pagination) va boshqa kerakli xizmatlarga ega to'liq ishlaydigan RESTful serverni yaratish uchun ishlatilishi mumkin bo'lgan ochiq manba real-time backend.
Supabase.
Firebase-ga alternativ, ochiq manbali bo‘lib, autentifikatsiya, ma’lumotlar bazasi, saqlash va boshqalar kabi ko‘plab xizmatlarni taklif etadi. U Flutter ilovasidan supabase_flutter kutubxonasi orqali Supabase bilan ishlash uchun qulay interfeysni taqdim etadi.
#Flutter
Serverpod.
Serverpod bu Dartda yozilgan ochiq manbali, kengaytiriladigan dastur serveri boʻlib, Flutterning tajribasini server tomoniga olib kirish uchun moʻljallangan. Bu dasturchilarga Dart-dan butun stek bo'ylab foydalanish imkonini beradi, bu esa server va mijoz o'rtasida kod almashish imkonini beradi, shu bilan rivojlanishni soddalashtiradi va samaradorlikni oshiradi.
Firebase.
Google tomonidan support qilinadigan Firebase bu Flutter bilan muammosiz integratsiya bo'ladigan mashhur "Backend as a Service" (BaaS) hisoblanadi. U real vaqtda ma'lumotlar bazalari, user autentifikatsiyasi, xosting va bulut funksiyalarini o'z ichiga olgan bir qator xizmatlarni taklif etadi. Firebase real vaqt rejimida ma'lumotlarni saqlaydigan va sinxronlaydigan JSON-ni qo'llab-quvvatlaydigan NoSQL ma'lumotlar bazasi bilan tanilgan va bu ko'plab Flutter ilovalari uchun ishonchli tanlovdir.
Backendless.
Backendless - bu Flutter veb-ilovalari hamda Android va iOS mobil ilovalarini qo'llab-quvvatlaydigan no-code/low-code backend xizmati. U real vaqtda ma'lumotlar bazasi, user boshqaruvi va fayllarni saqlash kabi keng qamrovli funksiyalar to'plamini taqdim etadi.
Parse Server.
Flutter ilovalarini ishlab chiqish va joylashtirish uchun ishlatilishi mumkin bo'lgan ochiq manbali backend framework. U bir nechta frontend texnologiyalarini qo'llab-quvvatlaydi va to'liq ilovalar to'plamini taqdim etadi, bu uni turli platformalar, jumladan, veb, mobil va IoT uchun ko'p qirrali variantga aylantiradi.
PocketBase.
Dart-da veb-saytlar yaratish uchun zamonaviy veb-ramka bo'lib, u Flutterga o'xshaydi, lekin server tomonida renderlashni qo'llab-quvvatlaydi. Bu autentifikatsiya, sahifalash (pagination) va boshqa kerakli xizmatlarga ega to'liq ishlaydigan RESTful serverni yaratish uchun ishlatilishi mumkin bo'lgan ochiq manba real-time backend.
Supabase.
Firebase-ga alternativ, ochiq manbali bo‘lib, autentifikatsiya, ma’lumotlar bazasi, saqlash va boshqalar kabi ko‘plab xizmatlarni taklif etadi. U Flutter ilovasidan supabase_flutter kutubxonasi orqali Supabase bilan ishlash uchun qulay interfeysni taqdim etadi.
#Flutter
👍4✍1
Flutterda "Tear-off" haqida.
Tear-off - bu Dart 2.0.0 versiyada qo'shilgan va hech qanday keraksiz lambda (anonim funksiya)-lardan foydalanmasdan to'g'ridan-to'g'ri parametr sifatida funksiyadan foydalanish mexanizmi.
Dart 2.15 versiyadan boshlab class konstruktor uchun ham "tear-off" ni qo'llab quvvatlaydi.
Flutter-da lambda o'rniga "tear-off"-dan foydalanish bir qator afzalliklarni beradi:
1. O‘qishga qulaylik.
2. Qayta foydalanish imkoniyati.
3. Unumdorlik (Performance).
Manbalar :
1. Official doc : Link
2. Official video : Link
3. Medium : Link
#Flutter
Tear-off - bu Dart 2.0.0 versiyada qo'shilgan va hech qanday keraksiz lambda (anonim funksiya)-lardan foydalanmasdan to'g'ridan-to'g'ri parametr sifatida funksiyadan foydalanish mexanizmi.
Dart 2.15 versiyadan boshlab class konstruktor uchun ham "tear-off" ni qo'llab quvvatlaydi.
Flutter-da lambda o'rniga "tear-off"-dan foydalanish bir qator afzalliklarni beradi:
1. O‘qishga qulaylik.
2. Qayta foydalanish imkoniyati.
3. Unumdorlik (Performance).
Manbalar :
1. Official doc : Link
2. Official video : Link
3. Medium : Link
#Flutter
👍5✍1⚡1
Flutterda Flame Engine haqida.
Flame - bu 2D o'yin mexanizmi bo'lib, uning yordamida biz flutter-da ishlaydigan turli xil 2D o'yin ilovalarini ishlab chiqamiz. Flame Engine-da ishlab chiqilgan o'yinlar Flutter-ning vidjet va Dart-ning obyektga yo'naltirilgan dasturlash paradigmasidan foydalanadi.
Flame modulli bo'lib, uning funksiyalarini kengaytirish uchun foydalanishingiz mumkin bo'lgan mustaqil paketlarni taqdim etadi, masalan:
flame_audio: audio imkoniyatlarini taqdim etadi.
flame_forge2d: fizika imkoniyatlarini beradi.
flame_tiled: plitkalar bilan ishlash imkoniyatini beradi.
Manbalar:
1. Flame off doc: Link
2. Casual games : Link
3. Codelab : Link
4. Other example : Link
#Flutter
Flame - bu 2D o'yin mexanizmi bo'lib, uning yordamida biz flutter-da ishlaydigan turli xil 2D o'yin ilovalarini ishlab chiqamiz. Flame Engine-da ishlab chiqilgan o'yinlar Flutter-ning vidjet va Dart-ning obyektga yo'naltirilgan dasturlash paradigmasidan foydalanadi.
Flame modulli bo'lib, uning funksiyalarini kengaytirish uchun foydalanishingiz mumkin bo'lgan mustaqil paketlarni taqdim etadi, masalan:
flame_audio: audio imkoniyatlarini taqdim etadi.
flame_forge2d: fizika imkoniyatlarini beradi.
flame_tiled: plitkalar bilan ishlash imkoniyatini beradi.
Manbalar:
1. Flame off doc: Link
2. Casual games : Link
3. Codelab : Link
4. Other example : Link
#Flutter
🆒3👍2✍1
Flutterda chalkashlik (obfuscation).
Noaniqlik yoki chalkashlik.
Flutter-dagi noaniqlik, odamlarga tushunishni qiyinlashtirish uchun ilovaning ikkilik (binary) kodini o'zgartirish jarayonini anglatadi. Bu kompilyatsiya qilingan Dart kodida har bir belgini boshqa belgi bilan almashtirish orqali funksiya va sinf nomlarini yashirishni o'z ichiga oladi.
Buning maqsadi hakerlarga ilovani teskari muhandislik (reverse engineering) qilish va maxfiy ma'lumotlarni ajratib olish yoki kodni o'zgartirishni qiyinlashtirishdir.
Flutter kodini chalkashtirish debug-da emas, faqat release-da ishlaydi. Chalkashtirish jarayoni hech qanday haqiqiy kodni chalkashtirishni amalga oshirmaydi, balki kodni tushunishni qiyinlashtirish uchun obyektlar nomini o'zgartiradi.
Ilovaning intellektual mulkini himoya qilish va maxfiy ma'lumotlarga ruxsatsiz kirishning oldini olish uchun xiralashtirish muhim ahamiyatga ega.
Shuni ta'kidlash kerakki, Flutter-dagi veb-ilovalar uchun xiralashtirish qo'llab-quvvatlanmaydi, lekin Flutter veb-ilovalarining versiyalari uchun minimallashtirish avtomatik ravishda qo'llaniladi.
Official doc : Link
#Flutter
Noaniqlik yoki chalkashlik.
Flutter-dagi noaniqlik, odamlarga tushunishni qiyinlashtirish uchun ilovaning ikkilik (binary) kodini o'zgartirish jarayonini anglatadi. Bu kompilyatsiya qilingan Dart kodida har bir belgini boshqa belgi bilan almashtirish orqali funksiya va sinf nomlarini yashirishni o'z ichiga oladi.
Buning maqsadi hakerlarga ilovani teskari muhandislik (reverse engineering) qilish va maxfiy ma'lumotlarni ajratib olish yoki kodni o'zgartirishni qiyinlashtirishdir.
Flutter kodini chalkashtirish debug-da emas, faqat release-da ishlaydi. Chalkashtirish jarayoni hech qanday haqiqiy kodni chalkashtirishni amalga oshirmaydi, balki kodni tushunishni qiyinlashtirish uchun obyektlar nomini o'zgartiradi.
Ilovaning intellektual mulkini himoya qilish va maxfiy ma'lumotlarga ruxsatsiz kirishning oldini olish uchun xiralashtirish muhim ahamiyatga ega.
Shuni ta'kidlash kerakki, Flutter-dagi veb-ilovalar uchun xiralashtirish qo'llab-quvvatlanmaydi, lekin Flutter veb-ilovalarining versiyalari uchun minimallashtirish avtomatik ravishda qo'llaniladi.
Official doc : Link
#Flutter
👍5
Flutterda Future va FutureOr farqlari.
Future.
Bu kelajakda bir nuqtada mavjud bo'ladigan qiymatni ifodalaydi. U asinxron operatsiyalarni bajarish uchun ishlatiladi, bu sizga asosiy oqimni bloklamasdan vazifalarni bajarishga imkon beradi.
FutureOr.
Bu Future yoki oddiy qiymatni ifodalashi mumkin bo'lgan toifa. Kirish sifatida sinxron va asinxron qiymatlarni qabul qilmoqchi bo'lsangiz foydali bo'ladi. Ushbu turdagi birlashma yanada moslashuvchan (flexible) API dizaynini yaratishga imkon beradi, bu yerda funksiya hodisa sikli (event loop) tufayli yuzaga keladigan keraksiz kechikishlar (delays)-siz darhol va kechiktirilgan natijalarni boshqarishi mumkin.
Xulosa :
Qiymat kelajakda mavjud bo'lishiga ishonchingiz komil bo'lganda Future-dan foydalaning. Darhol yoki kelajakdagi qiymatni qabul qilishda moslashuvchanlikni ta'minlashni istasangiz, FutureOr-dan foydalaning.
Manbalar:
Future : Link
FutureOr : Link
Medium : Link
StackOverFlow : Link
#Flutter
Future.
Bu kelajakda bir nuqtada mavjud bo'ladigan qiymatni ifodalaydi. U asinxron operatsiyalarni bajarish uchun ishlatiladi, bu sizga asosiy oqimni bloklamasdan vazifalarni bajarishga imkon beradi.
FutureOr.
Bu Future yoki oddiy qiymatni ifodalashi mumkin bo'lgan toifa. Kirish sifatida sinxron va asinxron qiymatlarni qabul qilmoqchi bo'lsangiz foydali bo'ladi. Ushbu turdagi birlashma yanada moslashuvchan (flexible) API dizaynini yaratishga imkon beradi, bu yerda funksiya hodisa sikli (event loop) tufayli yuzaga keladigan keraksiz kechikishlar (delays)-siz darhol va kechiktirilgan natijalarni boshqarishi mumkin.
Xulosa :
Qiymat kelajakda mavjud bo'lishiga ishonchingiz komil bo'lganda Future-dan foydalaning. Darhol yoki kelajakdagi qiymatni qabul qilishda moslashuvchanlikni ta'minlashni istasangiz, FutureOr-dan foydalaning.
Manbalar:
Future : Link
FutureOr : Link
Medium : Link
StackOverFlow : Link
#Flutter
👍2
Flutterda Shorebird haqida.
Shorebird - bu Flutter ilovalari uchun kodni "push" qilish imkoniyatini berish uchun mo'ljallangan vositalar to'plami. Bu dasturchilarga, yangilanishlarni ilovalar do‘koni (app store)-dan ilovaning yangi versiyasini yuklab olishni talab qilmasdan to‘g‘ridan-to‘g‘ri foydalanuvchi qurilmalariga yuborish imkonini beradi.
Shorebird iOS va Android platformalari bilan ishlash uchun moʻljallangan va undan Flutter desktop yoki boshqa platformalarda ham foydalanish mumkin.
Shorebird mavjud Flutter ilovangizni qabul qilish uchun kodni o'zgartirishni talab qilmaydi. Shorebird Play Store va App Store koʻrsatmalariga muvofiq ishlab chiqilgan.
Shorebird kodni surish (code push) deb nomlangan bulut xizmatidan foydalanadi, bu esa dasturchilarga ilova yangilanishlarini bevosita foydalanuvchilarning qurilmalariga yuborish imkonini beradi.
Shorebird Updater - bu Flutter engine-ga ulangan Rust kutubxonasi. Bu dasturchilarga o'zlarining Flutter ilovasining yangi versiyalarini yaratish va to'g'ridan-to'g'ri foydalanuvchilarning qurilmalariga joylashtirish imkonini beradi.
Shorebird pullik servis va oyiga 20$.
Shorebird vs Firebase Remote Config.
Shorebird va Firebase Remote Config ikkisi ham dasturchilarga ilova foydalanuvchi qurilmasiga o‘rnatilgandan keyin uning harakatini o‘zgartirish imkonini beradi. Firebase Remote Config ilova xatti-harakatlarini dinamik yangilash imkonini beruvchi Firebase tomonidan taqdim etilgan xususiyat bo'lsa-da, Shorebird Flutter ilovalari uchun kodni push qilish yechimi sifatida maxsus ishlab chiqilgan.
Manbalar :
Shorebird : Link
StackOverFlow : Link
Linkedin : Link
Youtube : Link
#Flutter
Shorebird - bu Flutter ilovalari uchun kodni "push" qilish imkoniyatini berish uchun mo'ljallangan vositalar to'plami. Bu dasturchilarga, yangilanishlarni ilovalar do‘koni (app store)-dan ilovaning yangi versiyasini yuklab olishni talab qilmasdan to‘g‘ridan-to‘g‘ri foydalanuvchi qurilmalariga yuborish imkonini beradi.
Shorebird iOS va Android platformalari bilan ishlash uchun moʻljallangan va undan Flutter desktop yoki boshqa platformalarda ham foydalanish mumkin.
Shorebird mavjud Flutter ilovangizni qabul qilish uchun kodni o'zgartirishni talab qilmaydi. Shorebird Play Store va App Store koʻrsatmalariga muvofiq ishlab chiqilgan.
Shorebird kodni surish (code push) deb nomlangan bulut xizmatidan foydalanadi, bu esa dasturchilarga ilova yangilanishlarini bevosita foydalanuvchilarning qurilmalariga yuborish imkonini beradi.
Shorebird Updater - bu Flutter engine-ga ulangan Rust kutubxonasi. Bu dasturchilarga o'zlarining Flutter ilovasining yangi versiyalarini yaratish va to'g'ridan-to'g'ri foydalanuvchilarning qurilmalariga joylashtirish imkonini beradi.
Shorebird pullik servis va oyiga 20$.
Shorebird vs Firebase Remote Config.
Shorebird va Firebase Remote Config ikkisi ham dasturchilarga ilova foydalanuvchi qurilmasiga o‘rnatilgandan keyin uning harakatini o‘zgartirish imkonini beradi. Firebase Remote Config ilova xatti-harakatlarini dinamik yangilash imkonini beruvchi Firebase tomonidan taqdim etilgan xususiyat bo'lsa-da, Shorebird Flutter ilovalari uchun kodni push qilish yechimi sifatida maxsus ishlab chiqilgan.
Manbalar :
Shorebird : Link
StackOverFlow : Link
Linkedin : Link
Youtube : Link
#Flutter
This media is not supported in your browser
VIEW IN TELEGRAM
Money manager app.
Ishlatilgan paketlar :
flutter_bloc
freezed
sqflite
getX
hive
flutter_svg
image_picker
flutter_slidable
...
Github : Link
#Project
Ishlatilgan paketlar :
flutter_bloc
freezed
sqflite
getX
hive
flutter_svg
image_picker
flutter_slidable
...
Github : Link
#Project
🔥8👍2
Forwarded from Samandar Ahadjonov
#YouTube #new_content
😅 You Dartdoshlar!
Flutterda localization package'lari bilan tanishmisiz? Siz uchun easy_localization package qulaymi?
Unday bo'lsa, quyidagi havola orqali yangi avlod localization package'ini qarshi oling vaeasy_localizationdan easy yo'l bilan xalos bo'ling!
Yangi videoni tandirdan chiqmasidan turib tomosha qiling. Havola esa quyida)
📹 Video uchun havola
P.s: Video ostida iloji boricha ko'proq izoh va like yig'ishimiz kerak, #Dartdoshlar befarq bo'lishmaydi deb o'ylayman)
@ahadjonovss
Flutterda localization package'lari bilan tanishmisiz? Siz uchun easy_localization package qulaymi?
Unday bo'lsa, quyidagi havola orqali yangi avlod localization package'ini qarshi oling va
Yangi videoni tandirdan chiqmasidan turib tomosha qiling. Havola esa quyida)
P.s: Video ostida iloji boricha ko'proq izoh va like yig'ishimiz kerak, #Dartdoshlar befarq bo'lishmaydi deb o'ylayman)
@ahadjonovss
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Dartda class modifikatorlari.
Modifikatorlar class yoki mixin va uning maydonlaridan qanday foydalanishni boshqarish uchun ishlatiladi. Dartda 6ta modifikatorlar mavjud :
Abstract.
To'g'ridan-to'g'ri class-dan namuna (instance) olish imkoni yo'q, voris olgan bola class (subclass)-larda abstrakt metodlarni qayta yozishga undaydi.
Interface.
Dartda har qanday class interfeys vazifasini bajarishi mumkin. Biroq, "interface" modifikatorining kiritilishi bilan dasturchilar faqat interfeys sifatida foydalanish uchun mo'ljallangan class-ni aniq belgilashlari mumkin. Bu shuni anglatadiki, boshqa class-lar uni implement qilishi mumkin, lekin ular undan voris (inherit) ololmaydilar.
Base.
Bu modifikator class-ni kengaytirish (extend)-ga imkon beradi, lekin uni implement qilib bo'lmaydi. Bu, ayniqsa, boshqa class-lar uchun asos bo'lib xizmat qilishi kerak bo'lgan class-ni aniqlash uchun foydali bo'lib, uni interfeys sifatida ishlatilishiga yo'l qo'ymaydi.
Final.
Tur ierarxiyasi yani, extend va implement-ni yopish uchun ishlatiladi. Bu joriy kutubxonadan tashqaridagi class voris olishidan saqlaydi.
Sealed.
Bu modifikator class-ni o'z kutubxonasidan tashqarida extend yoki implement qilish imkonini cheklaydi. Sealed class-lar ichki holatda abstract, ya'ni ulardan to'g'ridan-to'g'ri namuna olish mumkin emas. Biroq, ular factory konstruktorlariga ega bo'lishi va konstant konstruktorlarni belgilashi mumkin.
Manbalar :
1. Official doc : Link
2. Medium : Link
3. Youtube : Link
#Flutter
Modifikatorlar class yoki mixin va uning maydonlaridan qanday foydalanishni boshqarish uchun ishlatiladi. Dartda 6ta modifikatorlar mavjud :
Abstract.
To'g'ridan-to'g'ri class-dan namuna (instance) olish imkoni yo'q, voris olgan bola class (subclass)-larda abstrakt metodlarni qayta yozishga undaydi.
Interface.
Dartda har qanday class interfeys vazifasini bajarishi mumkin. Biroq, "interface" modifikatorining kiritilishi bilan dasturchilar faqat interfeys sifatida foydalanish uchun mo'ljallangan class-ni aniq belgilashlari mumkin. Bu shuni anglatadiki, boshqa class-lar uni implement qilishi mumkin, lekin ular undan voris (inherit) ololmaydilar.
Base.
Bu modifikator class-ni kengaytirish (extend)-ga imkon beradi, lekin uni implement qilib bo'lmaydi. Bu, ayniqsa, boshqa class-lar uchun asos bo'lib xizmat qilishi kerak bo'lgan class-ni aniqlash uchun foydali bo'lib, uni interfeys sifatida ishlatilishiga yo'l qo'ymaydi.
Final.
Tur ierarxiyasi yani, extend va implement-ni yopish uchun ishlatiladi. Bu joriy kutubxonadan tashqaridagi class voris olishidan saqlaydi.
Sealed.
Bu modifikator class-ni o'z kutubxonasidan tashqarida extend yoki implement qilish imkonini cheklaydi. Sealed class-lar ichki holatda abstract, ya'ni ulardan to'g'ridan-to'g'ri namuna olish mumkin emas. Biroq, ular factory konstruktorlariga ega bo'lishi va konstant konstruktorlarni belgilashi mumkin.
Manbalar :
1. Official doc : Link
2. Medium : Link
3. Youtube : Link
#Flutter
👍2
Flutterda await, unawaited va ignore Future-lar haqida.
await.
Future natijasi kerak bo'lganda va xatolarni handle qilmoqchi bo'lganingizda foydalaning.
unawaited.
Future-ning tugashini ataylab kutishni istamaydigan, lekin baribir uning mavjudligini tan olishni istaydigan Yondir va unut” (fire-and-forget) stsenariylari uchun foydalaning.
ignore.
Future-ni va u yuzaga kelishi mumkin bo'lgan xatolarni butunlay e'tiborsiz qoldirmoqchi bo'lganingizda foydalaning, bu uni muhim bo'lmagan operatsiyalar uchun xavfsizroq variantga aylantiradi.
Manbalar :
1. await - Link
2. unawaited - Link
3. ignore - Link
4. Post : Link
#Flutter
await.
Future natijasi kerak bo'lganda va xatolarni handle qilmoqchi bo'lganingizda foydalaning.
unawaited.
Future-ning tugashini ataylab kutishni istamaydigan, lekin baribir uning mavjudligini tan olishni istaydigan Yondir va unut” (fire-and-forget) stsenariylari uchun foydalaning.
ignore.
Future-ni va u yuzaga kelishi mumkin bo'lgan xatolarni butunlay e'tiborsiz qoldirmoqchi bo'lganingizda foydalaning, bu uni muhim bo'lmagan operatsiyalar uchun xavfsizroq variantga aylantiradi.
Manbalar :
1. await - Link
2. unawaited - Link
3. ignore - Link
4. Post : Link
#Flutter
👍1
Flutterda "late" o'zgaruvchidan ehtiyot bo'ling.
Late kalit so'zi, o'zgaruvchiga keyinroq qiymat beraman degani, lekin bir qancha kamchiliklarga ega.
Qiymat berishda (initialization) kompilyatsiya vaqti tekshiruvi yo'q. Agar siz late o'zgaruvchini qiymat berishni unutib qo'ysangiz, buni faqat runtime-da, dastur ishlamay qolganda bilasiz. Bu null-safety-ning ko'plab nuqtalarini buzilishiga olib keladi.
Yuqori optimallashtirish darajalarida runtime tekshiruvlari o'tkazib yuboriladi. -O4 bayrog'i bilan qurishda late o'zgaruvchilarni tekshirish o'tkazib yuboriladi. Bu esa bunday xatolarni tuzatishni qiyinlashtiradi.
Ko'proq xotirani egallaydi.
Sizning dasturingiz late o'zgaruvchi qiymat berilganmi yoki yo'qligini bilishi kerak. Buning uchun kompilyator ko'pincha xotirani oladigan yashirin ichki o'zgaruvchini yaratadi.
Har bir o'qishdan oldin ortiqcha "if" ishlatish.
Late o'zgaruvchini har safar o'qiganingizda dastur uni ishga tushirishni ta'minlashi kerak, shuning uchun qo'shimcha tekshiruv qo'shiladi.
Har bir yozishdan oldin qo'shimcha yozish.
Har safar late o'zgaruvchiga qiymat berganingizda dastur ishga tushirilganligini qayd qilish uchun ichki bayroqchani o'rnatadi.
Late-dan to'g'ri foydalanish uchun batafsil : Link
#Flutter
Late kalit so'zi, o'zgaruvchiga keyinroq qiymat beraman degani, lekin bir qancha kamchiliklarga ega.
Qiymat berishda (initialization) kompilyatsiya vaqti tekshiruvi yo'q. Agar siz late o'zgaruvchini qiymat berishni unutib qo'ysangiz, buni faqat runtime-da, dastur ishlamay qolganda bilasiz. Bu null-safety-ning ko'plab nuqtalarini buzilishiga olib keladi.
Yuqori optimallashtirish darajalarida runtime tekshiruvlari o'tkazib yuboriladi. -O4 bayrog'i bilan qurishda late o'zgaruvchilarni tekshirish o'tkazib yuboriladi. Bu esa bunday xatolarni tuzatishni qiyinlashtiradi.
Ko'proq xotirani egallaydi.
Sizning dasturingiz late o'zgaruvchi qiymat berilganmi yoki yo'qligini bilishi kerak. Buning uchun kompilyator ko'pincha xotirani oladigan yashirin ichki o'zgaruvchini yaratadi.
Har bir o'qishdan oldin ortiqcha "if" ishlatish.
Late o'zgaruvchini har safar o'qiganingizda dastur uni ishga tushirishni ta'minlashi kerak, shuning uchun qo'shimcha tekshiruv qo'shiladi.
Har bir yozishdan oldin qo'shimcha yozish.
Har safar late o'zgaruvchiga qiymat berganingizda dastur ishga tushirilganligini qayd qilish uchun ichki bayroqchani o'rnatadi.
Late-dan to'g'ri foydalanish uchun batafsil : Link
#Flutter
👍2
Dartda Statik analiz va Linter haqida.
Ma'lumki, dasturiy ta'minotni sinovdan o'tkazish, ishlab chiqish bosqichida mahsulot sifatini o'lchash uchun amalga oshiriladi. Sinov usullaridan biri bu Statik test. Buni ikkita asosiy toifaga bo'lish mumkin, Statik tahlil va sharhlar (Review).
Sharhlarda dasturchilar, feedback oladilar va muammolarni shaxslar yoki jamoalar bilan muhokama qiladilar.
Statik tahlil kodlarni ishga tushirmasdan amalga oshirilishi mumkin bo'lgan avtomatlashtirilgan vositalar yordamida amalga oshiriladi. Buning asosiy kontseptsiyasi shundan iboratki, tool-lar yordamida dasturchilar tomonidan yozilgan kodni tahlil qilish.
Dartda statik tahlilni amalga oshirish uchun sizga "analyzer" paketi yordam beradi. Dastlabki holatda, siz uni dart-sdk bilan olasiz. Xatolar (error), ogohlantirishlar (warning) va boshqa mumkin bo'lgan muammolar uchun dart statik tahlilini sozlashingiz mumkin.
Buning uchun loyihamizga "analysis_options.yaml" ni qo'shishimiz kerak. Bu yerda biz tahlil qilish uchun turli qoidalarni qo'shishimiz/yangilashimiz mumkin. Bunga qo'shimcha ravishda, samarali dart-dan har qanday lint qoidasini qo'shishingiz mumkin.
Agar siz yangi flutter loyihasini yaratsangiz, default holatda "analysis_options.yaml" loyiha bilan birga keladi.
flutter_lints va lints paketi juda ko'p linter qoidalarini taqdim etadi. Biz ushbu paketni dev_dependencies-ga qo'shishimiz va uni "analysis_options.yaml" faylga kiritishimiz mumkin.
Manbalar :
1. Linter rules : Link
2. Medium : Link
3. Hashnode : Link
#Dart
Ma'lumki, dasturiy ta'minotni sinovdan o'tkazish, ishlab chiqish bosqichida mahsulot sifatini o'lchash uchun amalga oshiriladi. Sinov usullaridan biri bu Statik test. Buni ikkita asosiy toifaga bo'lish mumkin, Statik tahlil va sharhlar (Review).
Sharhlarda dasturchilar, feedback oladilar va muammolarni shaxslar yoki jamoalar bilan muhokama qiladilar.
Statik tahlil kodlarni ishga tushirmasdan amalga oshirilishi mumkin bo'lgan avtomatlashtirilgan vositalar yordamida amalga oshiriladi. Buning asosiy kontseptsiyasi shundan iboratki, tool-lar yordamida dasturchilar tomonidan yozilgan kodni tahlil qilish.
Dartda statik tahlilni amalga oshirish uchun sizga "analyzer" paketi yordam beradi. Dastlabki holatda, siz uni dart-sdk bilan olasiz. Xatolar (error), ogohlantirishlar (warning) va boshqa mumkin bo'lgan muammolar uchun dart statik tahlilini sozlashingiz mumkin.
Buning uchun loyihamizga "analysis_options.yaml" ni qo'shishimiz kerak. Bu yerda biz tahlil qilish uchun turli qoidalarni qo'shishimiz/yangilashimiz mumkin. Bunga qo'shimcha ravishda, samarali dart-dan har qanday lint qoidasini qo'shishingiz mumkin.
Agar siz yangi flutter loyihasini yaratsangiz, default holatda "analysis_options.yaml" loyiha bilan birga keladi.
flutter_lints va lints paketi juda ko'p linter qoidalarini taqdim etadi. Biz ushbu paketni dev_dependencies-ga qo'shishimiz va uni "analysis_options.yaml" faylga kiritishimiz mumkin.
Manbalar :
1. Linter rules : Link
2. Medium : Link
3. Hashnode : Link
#Dart
⚡2👍1
Flutter yangiliklar.
Flutter 3.24 versiya haqida : Link
Dart 3.5 versiya haqida : Link
Flutter GPU haqida : Link
#News
Flutter 3.24 versiya haqida : Link
Dart 3.5 versiya haqida : Link
Flutter GPU haqida : Link
#News
Medium
What’s new in Flutter 3.24
Unleashing Flutter GPU, Multi-View Embedding, and More
👍2
Dartda "Extension" metodlar.
Kengaytma (extension) metod - bu dasturchilarga mavjud sinflar yoki interfeyslarga, ularning kodlarini o'zgartirmasdan yangi metodlarni qo'shish imkonini beradi. Bu metodlardan xuddi asl sinfning bir qismi sifatida foydalanish mumkin.
Kengaytma metod yaratish uchun "extension" kalit so'zidan foydalaniladi. Uning ichida metod, getter/setter, static member va operator yozish mumkin.
Bundan tashqari, kengaytmalarga nom berishimiz mumkin, bu API konfliktlari yuzaga kelganda foydali bo'ladi. Kengaytma metodlar dinamik o'zgaruvchilar uchun ishlamaydi.
Manbalar :
Official doc : Link
Medium : Link
GFG : Link
#Dart
Kengaytma (extension) metod - bu dasturchilarga mavjud sinflar yoki interfeyslarga, ularning kodlarini o'zgartirmasdan yangi metodlarni qo'shish imkonini beradi. Bu metodlardan xuddi asl sinfning bir qismi sifatida foydalanish mumkin.
Kengaytma metod yaratish uchun "extension" kalit so'zidan foydalaniladi. Uning ichida metod, getter/setter, static member va operator yozish mumkin.
Bundan tashqari, kengaytmalarga nom berishimiz mumkin, bu API konfliktlari yuzaga kelganda foydali bo'ladi. Kengaytma metodlar dinamik o'zgaruvchilar uchun ishlamaydi.
Manbalar :
Official doc : Link
Medium : Link
GFG : Link
#Dart
👍1
Widgets vs Helper methods.
Alohida vidjetlar yoki yordamchi metodlardan foydalanishda ularning farqlarini tushunib olish juda muhim. Quyida ulardan bir nechtasini ko'rib chiqamiz :
Unumdorlik (performance).
Alohida vidjetlar samaraliroq, chunki ular har safar ulardagi biror qiymat o'zgarganda qayta quriladi (rebuild), yordamchi metodlar esa har safar ota vidjet o'zgarganda qayta quriladi.
Agar vidjet ichida setState metod chaqirilsa, uning butun build metodi qayta ishga tushiriladi. Bu UI-da kichik bir qismi o'z holatini o'zgartirganda, uning butun o'rab turgan vidjetini qayta ishga tushirilishini anglatadi, bu bizni keraksiz build metod chaqiruvlariga olib keladi.
Har bir build funksiya chaqiruvi, faqat vidjet daraxtini qayta qurishdan tashqari, Element tree va RenderObject tree-ni qayta build qilishga sabab bo'ladi. Shunday qilib, biz setState-ni qanchalik kam chaqirsak, Flutter bu daraxtlarni shunchalik kamroq qayta quradi va dastur ko'proq samarali bo'ladi.
Testlash imkoniyati (testability).
Alohida vidjetlarni testlash odatda osonroq, chunki ularni yordamchi metodlarga qaraganda osonroq ajratish mumkin.
Aniqlik (accuracy).
Kod alohida vidjetlarga ajratilganda uni boshqarish va tushunish osonroq bo'lishi mumkin, chunki u yagona javobgarlik (Single responsibility) tamoyiliga yaxshiroq amal qiladi.
Eski va yaroqsiz BuildContext-dan foydalanish imkoniyatini kamaytirish uchun har bir vidjet o'zining BuildContext-ga murojaat qilishi kerak. Boshqacha qilib aytganda, har bir vidjet faqat bitta BuildContext-ga kirish huquqiga ega bo'lishi kerak.
Manbalar :
1. Official video : Link
2. Medium : Link
#Flutter
Alohida vidjetlar yoki yordamchi metodlardan foydalanishda ularning farqlarini tushunib olish juda muhim. Quyida ulardan bir nechtasini ko'rib chiqamiz :
Unumdorlik (performance).
Alohida vidjetlar samaraliroq, chunki ular har safar ulardagi biror qiymat o'zgarganda qayta quriladi (rebuild), yordamchi metodlar esa har safar ota vidjet o'zgarganda qayta quriladi.
Agar vidjet ichida setState metod chaqirilsa, uning butun build metodi qayta ishga tushiriladi. Bu UI-da kichik bir qismi o'z holatini o'zgartirganda, uning butun o'rab turgan vidjetini qayta ishga tushirilishini anglatadi, bu bizni keraksiz build metod chaqiruvlariga olib keladi.
Har bir build funksiya chaqiruvi, faqat vidjet daraxtini qayta qurishdan tashqari, Element tree va RenderObject tree-ni qayta build qilishga sabab bo'ladi. Shunday qilib, biz setState-ni qanchalik kam chaqirsak, Flutter bu daraxtlarni shunchalik kamroq qayta quradi va dastur ko'proq samarali bo'ladi.
Testlash imkoniyati (testability).
Alohida vidjetlarni testlash odatda osonroq, chunki ularni yordamchi metodlarga qaraganda osonroq ajratish mumkin.
Aniqlik (accuracy).
Kod alohida vidjetlarga ajratilganda uni boshqarish va tushunish osonroq bo'lishi mumkin, chunki u yagona javobgarlik (Single responsibility) tamoyiliga yaxshiroq amal qiladi.
Eski va yaroqsiz BuildContext-dan foydalanish imkoniyatini kamaytirish uchun har bir vidjet o'zining BuildContext-ga murojaat qilishi kerak. Boshqacha qilib aytganda, har bir vidjet faqat bitta BuildContext-ga kirish huquqiga ega bo'lishi kerak.
Sinflar yaxshiroq standart xatti-harakat (behaviour)-ga ega, metodlarning yagona foydasi - biroz kamroq kod yozish holos. Boshqa hech qanday funksional foyda yo'q.
Remi Russelet.
Manbalar :
1. Official video : Link
2. Medium : Link
#Flutter
Flutterda Arxitektura naqshlari.
Arxitektura nega kerak ?
Ilovaning turli qismlari o'zaro bog'liqlikni kamaytiradigan turli jihatlar uchun javobgar bo'lishi taminlaydi. Arxitektura ilovani boshqarib bo'lmaydigan holga keltirmasdan o'sishiga imkon beradi. Komponentlarni testlash oson bo'lishi, bu esa ishonchli testlash strategiyalarini yaratishga imkon beradi. Kodni tushunish va o'zgartirish oson bo'ladi.
Provider.
State boshqaruvini soddalashtirish uchun InheritedWidget ustiga qurilgan. Foydalanish va integratsiya qilish oson va ortiqcha (boilerplate) kodni kamaytiradi.
Provider: Ilovani yoki vidjet daraxtining alohida qismlarini o‘rab oladi.
Consumer: Provayderni tinglaydi va holat (state) o'zgarganda qayta quradi (rebuild).
Riverpod.
State boshqaruvi kutubxonasi boʻlib, u Provayderning gʻoyalariga asoslanadi, ammo takomillashtirilgan. Provayderga nisbatan yaxshilangan testlash va modullilikga ega va state-ga kirishi uchun BuildContext zaruriyatini yo'q qiladi.
Redux.
JavaScript-dan moslashtirilgan dastur holatini boshqarish uchun bashorat qilinadigan holat konteyneridir. Ortiqcha kodning ko'payishi va murakkablik dastur hajmi o'sishiga olib kelishi mumkin.
Store: Ilova holati (state)-ni saqlaydi.
Actions: State-dagi o'zgarishlarni tasvirlab beradi.
Reducers: harakatlarga javoban state qanday o'zgarishini aniqlaydigan sof funksiyalar.
GetX.
Bu state boshqaruvi, qaramlilik (dependency injection) va route boshqarish uchun yaxlit yechimdir (barchasi birda). Barchasi birda bo'lgani, kodni minimallashgani va samarali bo'lishiga qaramay, GetX ekotizimiga qattiq bog'langan. Shu bilan birga kichik ilovalar uchun ortiqcha bo'lishi mumkin.
Controller: state va mantiqni boshqaradi.
GetBuilder: Controller holati o'zgarganda UI-ni qayta quradi.
GetX/Obx: Reaktiv holatni boshqarish vidjetlari.
MobX.
JavaScript dunyosidagi MobX tomonidan ilhomlangan reaktiv state boshqaruvi kutubxonasi. Oddiy, intuitiv va ortiqcha kodni kamaytiradi.
Observable: state-ni ifodalaydi.
Action: state-ni o'zgartiradi.
Reaction: state o'zgarganda UI-ni avtomatik ravishda yangilaydi.
BLoC (Business Logic Component).
State-ni boshqarish uchun oqim (stream)-lardan foydalangan holda reaktiv dasturlash tamoyillariga tayanadi.
Model: Ma'lumotlar tuzilmalarini ifodalaydi.
View: BLoC bilan o'zaro aloqada bo'lgan Flutter vidjetlari.
BLoC: Stream-larni va biznes mantig'ini boshqaradi.
Yuqori darajada testlash imkoni va kengaytirilishi mumkin. UI va biznes mantig'ini aniq ajratishni rag'batlantiradi. Dart-ning stream API-sidan foydalanadi. Yangi boshlovchilar uchun o'rganish qiyin bo'lishi va ortiqcha kod juda katta bo'lishi mumkin.
Manba : Link
#Flutter
Arxitektura nega kerak ?
Ilovaning turli qismlari o'zaro bog'liqlikni kamaytiradigan turli jihatlar uchun javobgar bo'lishi taminlaydi. Arxitektura ilovani boshqarib bo'lmaydigan holga keltirmasdan o'sishiga imkon beradi. Komponentlarni testlash oson bo'lishi, bu esa ishonchli testlash strategiyalarini yaratishga imkon beradi. Kodni tushunish va o'zgartirish oson bo'ladi.
Provider.
State boshqaruvini soddalashtirish uchun InheritedWidget ustiga qurilgan. Foydalanish va integratsiya qilish oson va ortiqcha (boilerplate) kodni kamaytiradi.
Provider: Ilovani yoki vidjet daraxtining alohida qismlarini o‘rab oladi.
Consumer: Provayderni tinglaydi va holat (state) o'zgarganda qayta quradi (rebuild).
Riverpod.
State boshqaruvi kutubxonasi boʻlib, u Provayderning gʻoyalariga asoslanadi, ammo takomillashtirilgan. Provayderga nisbatan yaxshilangan testlash va modullilikga ega va state-ga kirishi uchun BuildContext zaruriyatini yo'q qiladi.
Redux.
JavaScript-dan moslashtirilgan dastur holatini boshqarish uchun bashorat qilinadigan holat konteyneridir. Ortiqcha kodning ko'payishi va murakkablik dastur hajmi o'sishiga olib kelishi mumkin.
Store: Ilova holati (state)-ni saqlaydi.
Actions: State-dagi o'zgarishlarni tasvirlab beradi.
Reducers: harakatlarga javoban state qanday o'zgarishini aniqlaydigan sof funksiyalar.
GetX.
Bu state boshqaruvi, qaramlilik (dependency injection) va route boshqarish uchun yaxlit yechimdir (barchasi birda). Barchasi birda bo'lgani, kodni minimallashgani va samarali bo'lishiga qaramay, GetX ekotizimiga qattiq bog'langan. Shu bilan birga kichik ilovalar uchun ortiqcha bo'lishi mumkin.
Controller: state va mantiqni boshqaradi.
GetBuilder: Controller holati o'zgarganda UI-ni qayta quradi.
GetX/Obx: Reaktiv holatni boshqarish vidjetlari.
MobX.
JavaScript dunyosidagi MobX tomonidan ilhomlangan reaktiv state boshqaruvi kutubxonasi. Oddiy, intuitiv va ortiqcha kodni kamaytiradi.
Observable: state-ni ifodalaydi.
Action: state-ni o'zgartiradi.
Reaction: state o'zgarganda UI-ni avtomatik ravishda yangilaydi.
BLoC (Business Logic Component).
State-ni boshqarish uchun oqim (stream)-lardan foydalangan holda reaktiv dasturlash tamoyillariga tayanadi.
Model: Ma'lumotlar tuzilmalarini ifodalaydi.
View: BLoC bilan o'zaro aloqada bo'lgan Flutter vidjetlari.
BLoC: Stream-larni va biznes mantig'ini boshqaradi.
Yuqori darajada testlash imkoni va kengaytirilishi mumkin. UI va biznes mantig'ini aniq ajratishni rag'batlantiradi. Dart-ning stream API-sidan foydalanadi. Yangi boshlovchilar uchun o'rganish qiyin bo'lishi va ortiqcha kod juda katta bo'lishi mumkin.
Manba : Link
#Flutter
Dartda kengaytma turlari.
Extension type (kengaytma turi).
Dart 3.3 versiyada qo'shilgan, mavjud turni boshqa, faqat statik interfeys bilan o'rab oladigan kompilyatsiya vaqtidagi abstraktsiya. Ular statik JS interop-ning asosiy komponenti hisoblanadi.
Yuqoridagi misolda ikkala yechim ham ishlaydi, ammo ikkinchisi yanada mustahkam va moslashuvchan. Kengaytma turidan foydalanib, biz ma'lum xatti-harakatlarga ega yangi EvenNumber turini yaratishimiz mumkin. Bu nativ platformalar bilan o'zaro ishlash yoki unumdorlikni (performance) optimallashtirish uchun foydali.
Kengaytma turlarida konstruktor bo'lishi mumkin, kengaytma metodlarda esa yo'q.
Xulosa :
Oddiy funksiyalar uchun kengaytma metodlardan foydalaning. Murakkab funksiyalar, nativ platformalar bilan o'zaro ishlash yoki unumdorlikni optimallashtirish uchun kengaytma turlaridan foydalaning.
Manbalar :
1. Official doc : Link
2. Medium : Link
#Dart
Extension type (kengaytma turi).
Dart 3.3 versiyada qo'shilgan, mavjud turni boshqa, faqat statik interfeys bilan o'rab oladigan kompilyatsiya vaqtidagi abstraktsiya. Ular statik JS interop-ning asosiy komponenti hisoblanadi.
Yuqoridagi misolda ikkala yechim ham ishlaydi, ammo ikkinchisi yanada mustahkam va moslashuvchan. Kengaytma turidan foydalanib, biz ma'lum xatti-harakatlarga ega yangi EvenNumber turini yaratishimiz mumkin. Bu nativ platformalar bilan o'zaro ishlash yoki unumdorlikni (performance) optimallashtirish uchun foydali.
Kengaytma turlarida konstruktor bo'lishi mumkin, kengaytma metodlarda esa yo'q.
Xulosa :
Oddiy funksiyalar uchun kengaytma metodlardan foydalaning. Murakkab funksiyalar, nativ platformalar bilan o'zaro ishlash yoki unumdorlikni optimallashtirish uchun kengaytma turlaridan foydalaning.
Manbalar :
1. Official doc : Link
2. Medium : Link
#Dart
👍1