Flutterda "runZoned" va "runZonedGuarded" funksiyalari haqida.
runZonedGuarded - bu maxsus zonada kod blokini ishga tushirish uchun ishlatiladigan funksiya. Ushbu funksiya kodni bajarish paytida yuzaga kelishi mumkin bo'lgan har qanday kutilmagan xatoliklarni (uncaught exception) boshqarishga yordam beradi.
runZoned va runZonedGuarded o'rtasidagi farq xatolarni handle qilishda. runZoned xatoliklarni (error va exception) aniqlaydi, lekin ilovaning ishdan chiqishi (crash)-ga to'sqinlik qilmaydi.
Boshqa tomondan, runZonedGuarded xatolarni qo'lga oladi, ularni handle qilishga imkon beradi va keyin ilovaning ishdan chiqishini oldini oladi.
Manba : Link
#Flutter
runZonedGuarded - bu maxsus zonada kod blokini ishga tushirish uchun ishlatiladigan funksiya. Ushbu funksiya kodni bajarish paytida yuzaga kelishi mumkin bo'lgan har qanday kutilmagan xatoliklarni (uncaught exception) boshqarishga yordam beradi.
runZoned va runZonedGuarded o'rtasidagi farq xatolarni handle qilishda. runZoned xatoliklarni (error va exception) aniqlaydi, lekin ilovaning ishdan chiqishi (crash)-ga to'sqinlik qilmaydi.
Boshqa tomondan, runZonedGuarded xatolarni qo'lga oladi, ularni handle qilishga imkon beradi va keyin ilovaning ishdan chiqishini oldini oladi.
Manba : Link
#Flutter
Flutterda ErrorWidget haqida.
Flutterda ba'zi sabablarga ko'ra widget qurilishida xatolik kelib chiqsa, ErrorWidget ko'rinadi. Dastlabki (default) holatda xatolik habarini, biz ko'p marotaba uchratgan qizil oynaga joylashtirib ko'rsatadi.
Dastur yaratish davomida bu yaxshi bo'lishi mumkin lekin Production holati uchun bu yaxshi manzara emas. Mabodo dasturda xatolik paydo bo'lsa, xatolik dasturda chiroyliroq ko'rinishi uchun esa ErrorWidget.builder dan foydalanamiz.
Manba : Link
#Flutter
Flutterda ba'zi sabablarga ko'ra widget qurilishida xatolik kelib chiqsa, ErrorWidget ko'rinadi. Dastlabki (default) holatda xatolik habarini, biz ko'p marotaba uchratgan qizil oynaga joylashtirib ko'rsatadi.
Dastur yaratish davomida bu yaxshi bo'lishi mumkin lekin Production holati uchun bu yaxshi manzara emas. Mabodo dasturda xatolik paydo bo'lsa, xatolik dasturda chiroyliroq ko'rinishi uchun esa ErrorWidget.builder dan foydalanamiz.
Manba : Link
#Flutter
Flutterda ValueListenableBuilder va ValueNotifier vidjetlar haqida.
ValueNotifier.
Bu vidjet ChangeNotifier (mixin class) va ValueListenable (abstract class)-dan voris olgan class. U o'zida bitta qiymatni ushlab turadi va qachonki qiymat o'zgarsa, uni tinglab turgan vidjetlarga habar beradi. Yangi qiymat eski qiymat bilan bir xil bo'lmagan holatda notify qiladi.
ValueListenableBuilder.
Bu vidjet ValueListenable obyektini qabul qiladi va undagi o'zgarishlarga ko'ra builder metodni chaqiradi.
#Flutter
ValueNotifier.
Bu vidjet ChangeNotifier (mixin class) va ValueListenable (abstract class)-dan voris olgan class. U o'zida bitta qiymatni ushlab turadi va qachonki qiymat o'zgarsa, uni tinglab turgan vidjetlarga habar beradi. Yangi qiymat eski qiymat bilan bir xil bo'lmagan holatda notify qiladi.
Object > ChangeNotifier > ValueNotifier.
ValueListenableBuilder.
Bu vidjet ValueListenable obyektini qabul qiladi va undagi o'zgarishlarga ko'ra builder metodni chaqiradi.
Object > Listenable > ValueListenable > ValueListenableBuilder.
#Flutter
Flutterda Debounce va Throttle haqida.
Debounce - bu funksiya qisqa vaqt ichida qayta-qayta chaqirilmasligini ta'minlash uchun ishlatiladigan usul. Bu, ayniqsa, matn kiritish (text input) yoki scroll holatlari bilan ishlashda foydalidir.
Tasavvur qiling, siz Flutter ilovangizda qidiruv funksiyasini yaratmoqdasiz va foydalanuvchi turiga qarab qidiruv natijalarini API dan olishni xohlaysiz. Debounce ishlatilmagan holatda, ilovangiz har bir tugma bosish uchun bir nechta API so'rovlarini yuborishi mumkin, bu esa serveringizga keraksiz yuklarni keltirib chiqarishi va ilovani sekinlashtirishi mumkin.
Debounce yordamida siz API chaqiruvi foydalanuvchi ma'lum vaqt davomida yozishni to'xtatgandan keyingina amalga oshirilishiga ishonch hosil qilishingiz mumkin, bu keraksiz so'rovlarni kamaytiradi va ish faoliyatini yaxshilaydi.
Throttle - funksiya chaqiruvlarining chastotasini boshqarishga yordam berishi bilan debunce-ga o'xshaydi, lekin bitta asosiy farq bilan, throttle funksiya belgilangan vaqt oralig'ida ko'pi bilan bir marta chaqirilishini ta'minlaydi. U odatda scroll hodisalari yoki tugmani bosish kabi muayyan harakatlarni bajarish tezligini cheklamoqchi bo'lgan holatlarda qo'llaniladi.
Aytaylik, siz ilovangizda cheksiz scroll-ni ham amalga oshirishni xohlaysiz, bunda foydalanuvchi pastga scroll qilganda, ko'proq qidiruv natijalari yuklanadi. Throttle ishlatilmaganda, ilovangiz har bir kichik scroll harakati uchun yangi natijalarni yuklashga urinishi mumkin.
Throttle esa yangi natijalar faqat o'rtacha tezlikda yuklanishini ta'minlab, scroll hodisalari chastotasini cheklash imkonini beradi.
Debounce package : Link
Manba : Link
#Flutter
Debounce - bu funksiya qisqa vaqt ichida qayta-qayta chaqirilmasligini ta'minlash uchun ishlatiladigan usul. Bu, ayniqsa, matn kiritish (text input) yoki scroll holatlari bilan ishlashda foydalidir.
Tasavvur qiling, siz Flutter ilovangizda qidiruv funksiyasini yaratmoqdasiz va foydalanuvchi turiga qarab qidiruv natijalarini API dan olishni xohlaysiz. Debounce ishlatilmagan holatda, ilovangiz har bir tugma bosish uchun bir nechta API so'rovlarini yuborishi mumkin, bu esa serveringizga keraksiz yuklarni keltirib chiqarishi va ilovani sekinlashtirishi mumkin.
Debounce yordamida siz API chaqiruvi foydalanuvchi ma'lum vaqt davomida yozishni to'xtatgandan keyingina amalga oshirilishiga ishonch hosil qilishingiz mumkin, bu keraksiz so'rovlarni kamaytiradi va ish faoliyatini yaxshilaydi.
Throttle - funksiya chaqiruvlarining chastotasini boshqarishga yordam berishi bilan debunce-ga o'xshaydi, lekin bitta asosiy farq bilan, throttle funksiya belgilangan vaqt oralig'ida ko'pi bilan bir marta chaqirilishini ta'minlaydi. U odatda scroll hodisalari yoki tugmani bosish kabi muayyan harakatlarni bajarish tezligini cheklamoqchi bo'lgan holatlarda qo'llaniladi.
Aytaylik, siz ilovangizda cheksiz scroll-ni ham amalga oshirishni xohlaysiz, bunda foydalanuvchi pastga scroll qilganda, ko'proq qidiruv natijalari yuklanadi. Throttle ishlatilmaganda, ilovangiz har bir kichik scroll harakati uchun yangi natijalarni yuklashga urinishi mumkin.
Throttle esa yangi natijalar faqat o'rtacha tezlikda yuklanishini ta'minlab, scroll hodisalari chastotasini cheklash imkonini beradi.
Debounce package : Link
Manba : Link
#Flutter
Dasturimizda "TextField" vidjeti bilan ishlaganda, foydalanuvchi "TextField"-dan tashqariga bosganda, klaviaturani avtomatik yopish uchun har bir oynada alohida kod yozishga to'g'ri kelar edi. Bu kod parchasi esa butun ilova uchun ishlaydi.
#Flutter
#Flutter
π2
Dart-da AsyncMemoizer class haqida.
AsyncMemoizer - bu Flutter/Dart-dagi "async" paketidagi class bo'lib, u sizga asinxron funksiyani aynan bir marta ishga tushirish va uning natijasini keshlash imkonini beradi.
Deylik sizda ko'p marotaba chaqirilishi mumkin bo'lgan lekin faqat bir martta ishga tushishini istaydigan funksiyangiz bor.
Foydalari : Caching, Thread-safety.
Qachon foydalanamiz :
1. Agar API javobi tez-tez o'zgarmasa, keraksiz tarmoq so'rovlarini oldini olish uchun uni keshlang.
2. Murakkab hisob-kitoblar natijalarini bir xil input-lar uchun qayta hisoblab chiqmaslik uchun eslab qoling.
Manba : Link
#Dart
AsyncMemoizer - bu Flutter/Dart-dagi "async" paketidagi class bo'lib, u sizga asinxron funksiyani aynan bir marta ishga tushirish va uning natijasini keshlash imkonini beradi.
Deylik sizda ko'p marotaba chaqirilishi mumkin bo'lgan lekin faqat bir martta ishga tushishini istaydigan funksiyangiz bor.
Foydalari : Caching, Thread-safety.
Qachon foydalanamiz :
1. Agar API javobi tez-tez o'zgarmasa, keraksiz tarmoq so'rovlarini oldini olish uchun uni keshlang.
2. Murakkab hisob-kitoblar natijalarini bir xil input-lar uchun qayta hisoblab chiqmaslik uchun eslab qoling.
Manba : Link
#Dart
Flutterda animatsiya turlari.
Yashirin (implicit).
Bu turdagi animatsiyalar eng sodda va ulardan foydalanish oson. Qiymat o'zgartirilganda ular avtomatik ravishda jonlantiriladi va Flutter sahna ortidagi hamma narsani boshqaradi. Yashirin animatsiyalarga "Animated.." bilan boshlanuvchi barcha vidjetlar kiradi.
Aniq (explicit).
Bu turdagi animatsiyalar sizga animatsiya jarayonini "AnimationController" orqali ko'proq boshqarish imkonini beradi. Siz animatsiyaning yo'nalishini, davomiyligini va boshqa jihatlarini boshqarishingiz mumkin. Aniq animatsiyalarga oxiri "..Transition" bilan tugaydigan vidjetlar kiradi.
Fizikaga asoslangan (physics-based).
Flutter sizga real harakat va oΚ»zaro taΚΌsirini taqlid qiluvchi fizikaga asoslangan animatsiyalarni yaratishga imkon beradi. Ushbu animatsiyalar ilovangizni yanada real va interaktiv qiladi. Masalan, tushish yoki tebranish effektlari uchun vidjetni jonlantirishingiz mumkin.
Maxsus (custom).
Tayyor animatsiya vidjetlariga qo'shimcha ravishda, Flutter sizga maxsus "Tweens" va "Curves" yordamida o'zingizning shaxsiy animatsiyalaringizni yaratishga imkon beradi. Bu sizga istalgan animatsiya effektiga erishish uchun moslashuvchanlikni beradi.
Manba : Link
#Flutter
Yashirin (implicit).
Bu turdagi animatsiyalar eng sodda va ulardan foydalanish oson. Qiymat o'zgartirilganda ular avtomatik ravishda jonlantiriladi va Flutter sahna ortidagi hamma narsani boshqaradi. Yashirin animatsiyalarga "Animated.." bilan boshlanuvchi barcha vidjetlar kiradi.
Aniq (explicit).
Bu turdagi animatsiyalar sizga animatsiya jarayonini "AnimationController" orqali ko'proq boshqarish imkonini beradi. Siz animatsiyaning yo'nalishini, davomiyligini va boshqa jihatlarini boshqarishingiz mumkin. Aniq animatsiyalarga oxiri "..Transition" bilan tugaydigan vidjetlar kiradi.
Fizikaga asoslangan (physics-based).
Flutter sizga real harakat va oΚ»zaro taΚΌsirini taqlid qiluvchi fizikaga asoslangan animatsiyalarni yaratishga imkon beradi. Ushbu animatsiyalar ilovangizni yanada real va interaktiv qiladi. Masalan, tushish yoki tebranish effektlari uchun vidjetni jonlantirishingiz mumkin.
Maxsus (custom).
Tayyor animatsiya vidjetlariga qo'shimcha ravishda, Flutter sizga maxsus "Tweens" va "Curves" yordamida o'zingizning shaxsiy animatsiyalaringizni yaratishga imkon beradi. Bu sizga istalgan animatsiya effektiga erishish uchun moslashuvchanlikni beradi.
Manba : Link
#Flutter
π1πΎ1
Media is too big
VIEW IN TELEGRAM
Flutterda "camerawesome" paket orqali kamera bilan ishlash.
Github repo : Link
Package : Link
Package doc : Link
#project
Github repo : Link
Package : Link
Package doc : Link
#project
β‘1π1
Flutterda moslashuvchan (responsive) UI.
Moslashuvchanlik (responsiveness) - bu biz chizgan UI, turli xil ekran kattaliklariga ega qurilmalarda mos ravishda ko'rinishi.
Moslashuvchan UI chizish uchun ishlatiladigan uskunalar :
1. MediaQuery (class).
2. Flexible va Expanded (widget).
3. LayoutBuilder va OrientationBuilder (widget).
4. ApectRatio (widget).
5. Flutter Screen Util (package).
6. Sizer (package).
Manba : Link
#Flutter
Moslashuvchanlik (responsiveness) - bu biz chizgan UI, turli xil ekran kattaliklariga ega qurilmalarda mos ravishda ko'rinishi.
Moslashuvchan UI chizish uchun ishlatiladigan uskunalar :
1. MediaQuery (class).
2. Flexible va Expanded (widget).
3. LayoutBuilder va OrientationBuilder (widget).
4. ApectRatio (widget).
5. Flutter Screen Util (package).
6. Sizer (package).
Manba : Link
#Flutter
π3
Flutterda "DeepCollectionEquality" class haqida.
DeepCollectionEquality - bu class nomidan ham malumki, kolleksiya (list, map, set, iterable)-larni elementlari tengligini tekshirishni chuqur amalga oshiradi.
Ikki rejimdan birida ishlaydi: tartibli yoki tartibsiz (ordered or unordered).
Tartiblangan (ordered) rejimda listlar va iterable-lar bir xil tartibda teng elementlarga ega bo'lishi talab qilinadi. Tartibsiz (unordered) rejimda iterable va listlardagi elementlarning tartibi muhim emas.
List, Set va Map-lar elementlarini tengligini tekshirish uchun alohida funksiyalar ham mavjud : listEquals, setEquals, mapEquals.
Manba : Link
#Flutter
DeepCollectionEquality - bu class nomidan ham malumki, kolleksiya (list, map, set, iterable)-larni elementlari tengligini tekshirishni chuqur amalga oshiradi.
Ikki rejimdan birida ishlaydi: tartibli yoki tartibsiz (ordered or unordered).
Tartiblangan (ordered) rejimda listlar va iterable-lar bir xil tartibda teng elementlarga ega bo'lishi talab qilinadi. Tartibsiz (unordered) rejimda iterable va listlardagi elementlarning tartibi muhim emas.
List, Set va Map-lar elementlarini tengligini tekshirish uchun alohida funksiyalar ham mavjud : listEquals, setEquals, mapEquals.
Manba : Link
#Flutter
Dartda Reference, Shallow va Deep copy-lar haqida.
Reference copy.
Bu bir obyektning xotirada joylashgan joyini bildirib turuvchi havola (reference)-ni nusxalash. Yuqoridagi misolda, "person2" o'zgaruvchi shunchaki "person1" o'zgaruvchi o'zida obyektning xotirada joylashgan joyning havolasini nusxaladi.
Shallow copy.
Nomidan malumki, yuzaki nusxalash. Yuqoridagi misolda, "person3" o'zgaruvchi uchun xotirada alohida "Person" obyekti yaraladi lekin uning ichidagi obyektlar "person1" obyekti ichidagi obyektlarning havolasini nusxalaydi. Buning kamchilik tomoni, ichki obyektlar o'zgarsa boshqalariga ham tasir qiladi.
Deep copy.
Chuqur nusxalash bu butunlay yangi obyekt yaratish degani. Yuqoridagi misolda "person4" va "person5" o'zgaruvchilar uchun xotirada alohida obyekt va hatto uning ichidagi obyektlar ham alohida yaraladi.
#Dart
Reference copy.
Bu bir obyektning xotirada joylashgan joyini bildirib turuvchi havola (reference)-ni nusxalash. Yuqoridagi misolda, "person2" o'zgaruvchi shunchaki "person1" o'zgaruvchi o'zida obyektning xotirada joylashgan joyning havolasini nusxaladi.
Shallow copy.
Nomidan malumki, yuzaki nusxalash. Yuqoridagi misolda, "person3" o'zgaruvchi uchun xotirada alohida "Person" obyekti yaraladi lekin uning ichidagi obyektlar "person1" obyekti ichidagi obyektlarning havolasini nusxalaydi. Buning kamchilik tomoni, ichki obyektlar o'zgarsa boshqalariga ham tasir qiladi.
Deep copy.
Chuqur nusxalash bu butunlay yangi obyekt yaratish degani. Yuqoridagi misolda "person4" va "person5" o'zgaruvchilar uchun xotirada alohida obyekt va hatto uning ichidagi obyektlar ham alohida yaraladi.
#Dart