Flutter Notes
202 subscribers
82 photos
8 videos
1 file
168 links
Avval bajaring.
Keyin to'g'ri bajaring.
Undan keyin esa yaxshiroq bajaring.

Android Notes : @android_notes_bek

Muallif : @Otabek_Nabijonov
Download Telegram
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
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 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.

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 InteractiveViewer vidjet haqida.

Bu vidjet Flutter 1.2 versiyadan boshlab qo'shilgan va bu orqali rasmni zoom in/out qilish imkoni bo'ladi.

Manba : Link

#Flutter
πŸ‘1
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
O'zim shaxsan IOS-da build qilib ko'rmadim hali (Mac olsam sinab ko'raman :)

Lekin kimgadir kerak bo'lib qolar degandek...
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
πŸ‘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
Odamlar o'ylaydiki yaxshiroq dasturchi bo'lish bu :

❌ Ko'proq video ko'rish.
❌ Ko'proq darsliklar olish.
❌ Ko'proq LeetCode ishlash.

Aslida esa :

βœ… Dokumentatsiya o'qish.
βœ… Foydali nimadir qurish.
πŸ‘¨β€πŸ’»6πŸ‘2
This media is not supported in your browser
VIEW IN TELEGRAM
Slidable widget.

Ajoyib va qulay.

Package : Link

#Flutter
πŸ‘1
Flutterda CustomPainter chizish.

Github repo : Link

#Flutter
πŸ‘1
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
πŸ‘1πŸ‘Ύ1
This media is not supported in your browser
VIEW IN TELEGRAM
Flutterda WebView demo.

Github repo : Link

#project
πŸ‘1
Media is too big
VIEW IN TELEGRAM
Flutterda "camerawesome" paket orqali kamera bilan ishlash.

Github repo : Link
Package : Link
Package doc : Link

#project
⚑1πŸ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
Flutterda "local_auth" paketdan foydalanib Biometric Auth.

Github repo : Link

#project
πŸ‘2
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
πŸ‘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
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
This media is not supported in your browser
VIEW IN TELEGRAM
Simple app which working with accelerometer sensor.

Github repo : Link

#project
πŸ”₯2