tgindex
Flutter Notes
@flutter_notes_bekанглийский

Avval bajaring. Keyin to'g'ri bajaring. Undan keyin esa yaxshiroq bajaring. Android Notes : @android_notes_bek Muallif : @Otabek_Nabijonov

Последний пост
15 авг.
Последнее чтение
11:26
Постов за неделю
5
Всего постов
38
Тип
открытый
Язык
английский
В каталоге с
13 авг.
Подписчики
194
0 за сутки
Сутки
0
0,00%
Неделя
 
Месяц
 
Просмотров на пост
272
38 постов
Вовлечённость
140,2%
к подписчикам
Постов в день
0,7
всего 38
Упоминаний
0
каналов
Охват размещения
оценка
1/24сутки в ленте
58
1/48двое суток
66
1/72трое суток
71

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • Qiziq bir savol: Nega Flutter SDK versiyalarida sakrashlar bor ? Misol: 3.41 -> 3.44 -> 3.47 -> 3.50 etc

  • Flutter 3.47 shu yerda, o'zgarishlar katta, ayniqsa Desktop tomonlarda ) https://flutter.dev/blog/whats-new-in-flutter-3-47

  • Flutter 3.47 shu yerda, o'zgarishlar katta, ayniqsa Desktop tomonlarda ) https://flutter.dev/blog/whats-new-in-flutter-3-47

  • Xatolarning narxi Google, Facebook, OpenAI - bu kabi kompaniyalar haqida gapirganda hammaning ko’z oldiga faqat muvaffaqiyat keladi. Ya’ni ular nima qilmasin, zo’r bo’ladi, degan fikr keladi. Masalan, Google (Alphabet Inc) ni olaylik. Google qidiruv tizimi, Google Chrome, Android, Youtube, Gemini - juda yirik va juda muvaffaqiyatli loyihalar. Lekin Googlening hamma g’oyalari ham muvaffaqiyatli bo’lmagan. Mana bu havola orqali Google yaratgan va keyinchalik yopilib ketgan loyihalar ro’yxatini ko’rishingiz mumkin: https://killedbygoogle.com/ 300 dan ortiq loyiha, ba’zilari 8-10 oyda yopilgan bo’lsa, ba’zi loyihalar 10 yillab yashab, keyin yopilgan. Yillar davomida bozorini qidirgan, odamlar ishlagan, milliardlab pullar sarflangan va yakunida bozorini yoki mijozini topa olmay, yopilgan. Yopilgan loyihalar soni tiriklaridan ko’p. Va bu tabiiy hol. Siz ham biznes qilganda xato loyihalar qilishingiz mumkin. Va bu xatoni qancha erta anglab, tan olinsa, shunchalik kamroq zarar ko’rish mumkin. PS: OpenAI ning ham o’z qabristoni paydo bo’lib ulguribdi - https://www.killedbyopenai.com/ @Fikrofon

  • try/catch vs Either. try/catch (Imperativ boshqaruv oqimi). Dartning xatoliklarni ushlash bo'yicha standart mexanizmi. U xatoliklarni normal ishlash jarayonini to'xtatishi kerak bo'lgan "anomaliya" sifatida qabul qiladi. Kodni try blokiga o'raysiz. Agar biror narsa xato ketsa, Exception yoki Error ni uloqtirasiz (throw). Kod darhol ishlashdan to'xtaydi va boshqaruv zanjirdagi eng yaqin catch blokiga topshiriladi. Dartdagi exception-lar unchecked hisoblanadi, ya'ni kompilyator sizni ularni handle qilishga majbur qilmaydi. throw operatori bajarilganda, Dart runtime bir necha og'ir operatsiyalarni amalga oshiradi: • Xotirada (Heap) Exception/Error obyektini yaratadi. • Xato qayerdan kelib chiqqanini aniqlash uchun StackTrace obyektini yaratadi, bu protsessor uchun og'ir jarayon. Either (Deklarativ boshqaruv oqimi). Either patterni funksional dasturlashdan kirib kelgan. U ikki turdan biri bo'lishi mumkin bo'lgan qiymatni ifodalaydi: an'anaviy holatda: Left -> Error Right -> Success. Funksiya exception uloqtirish o'rniga, xatoni o'z ichiga olgan obyektni qaytaradi. Dart kompilyator esa ma'lumotni chiqarib olishdan oldin har ikkala ehtimollikni handle qilishga majbur qiladi. Asosiy farq bu chiziqli ishlash (Linear execution). Bu ikkala usulning eng katta farqi chiziqli ishlashni qanday boshqarishidadir. Chiziqli ishlash - bu kodning qatorma-qator, tartib bilan o'qilishi (xuddi zinalardan qadam-baqadam tushish kabi). try/catch chiziqli ishlashni uzadi: throw ishga tushganda, kompyuter odatiy qatorma-qator o'qishni tashlab yuboradi. U zinalardan yurish o'rniga "derazadan sakraydi" va boshqa joydagi catch blokini qidirib teleport bo'ladi. (GOTO kabi). Either chiziqli ishlashni saqlab qoladi: Xatolik yuz bersa ham, dastur vahimaga tushib boshqa joyga sakramaydi. Xatoni shunchaki qutiga soladi (Left obyekti) va odatiy return orqali o'zining yo'lida davom etaveradi. Manbalar: 1. Doc: Link 2. Medium: Link 3. Medium: Link #Flutter

  • Dart Records haqida ajoyib maqola ekan. https://medium.com/@yurinovicow/dart-records-a16c5fbc4689

  • Flutterning 3D yo'nalishida ham rivojlanishi yomon emas. https://fscene.dev/

  • Concurrency vs Parallelism. Concurrency (Event Loop). Bir vaqtning o'zida bir nechta vazifalarni boshqarishni anglatadi, ularni bir vaqtning o'zida bajarishni emas. Aslini olganda, siz bir nechta operatsiyalarni ular o'rtasida aqlli ravishda almashish orqali bajarasiz. Misol: siz gavjum qahvaxonada yolg'iz barista ekanligingizni tasavvur qiling. Siz bir vaqtning o'zida faqat bitta ichimlik tayyorlashingiz mumkin, lekin qahva mashinasi qahva damlashini (kutish jarayoni) quruq kutib turmaysiz, darhol boshqa mijozning buyurtmasini tayyorlashga kirishasiz. Birinchi ichimlik tayyor bo'lgach, unga qaytasiz. (Multi-tasking) Default holatda Dart kodlari, Flutter UI va state boshqaruvi 'Main Isolate' deb nomlanuvchi yagona oqimda (single thread) ishlaydi. Concurrency-ga quyidagilar orqali erishiladi: async/await, Future, Stream. I/O operatsiyalari uchun ishlatiladi (Internetdan ma'lumot yuklash, fayldan o'qish, ma'lumotlar bazasiga murojaat). Ya'ni, protsessor kutib turadigan holatlarda. Parallelism (Isolate). Vazifalarni haqiqatdan ham bir vaqtning o'zida bajarishni anglatadi. Bu ko'p yadroli protsessorlarda amalga oshadi va har bir vazifa alohida yadroda parallel ishlaydi. Misol: Qahvaxonada ikkita mustaqil barista ishlamoqda. Biri birinchi qahvani, ikkinchisi esa ayni shu vaqtda ikkinchi qahvani tayyorlaydi. Ishlar haqiqiy ma'noda parallel ketyapti va jarayon ikki barobar tezlashadi. Parallelism-ga Isolate orqali erishiladi. Yangi Isolate yaratganingizda, unda alohida xotira va Event Loop bo'ladi va CPU-ning boshqa yadrosida ishlaydi. Og'ir CPU operatsiyalari uchun ishlatiladi (Katta hajmdagi JSON fayllarni parse qilish, rasmlarga filtr qo'llash, og'ir matematik hisob-kitoblar). Agar bular asosiy oqimda (Main Isolate) qilinsa, ilova qotib qoladi (UI freeze). Manbalar: 1. Book: Link 2. Doc: Link 3. Article: Link #Flutter

  • “Enshittification” degan termin bor. Qisqa qilib tushuntirganda, bir product boshida sizni quchoqlab oladi. Arzon, tez, bepul, qulay. “User first” degan gaplar bilan. Hamma narsa siz uchun qilingandek. Keyin siz o‘rganasiz. Undan keyin ikkinchi tomon kiradi: driver, seller, creator, advertiser, business. Platforma endi ularga ham xizmat qiladi. Keyin esa oxirgi bosqich boshlanadi: ham userdan, ham providerdan maksimal pul siqish. Misol uchun buni Yandex Taxida ko'rganmiz. Boshida userga discount. Keyin haydovchiga bonus. Keyin hamma o‘rganib bo‘lgach: narx oshadi, komissiya ko‘payadi, eski “bepul qulayliklar” premium bo‘ladi, support yomonlashadi, lekin app ichida “biz siz uchun yaxshilandik” degan banner turadi. Telegram ham shunga o‘xshash yo‘ldan o‘tdi. Boshida tez, toza, reklamasiz, bepul messenger edi. Keyin ads chiqdi. Keyin Premium keldi. Keyin ayrim oddiy qulayliklar premium feature bo‘lib ketdi. Telegram hali ham yaxshi product. Lekin pattern tanish. Endi savol: AI toolarda ham shu narsa boshlanmayaptimi? Oldin tool bitta ishni yaxshi qilardi. Search - natija topardi. Map - yo‘l ko‘rsatardi. Email - xat yozish va o‘qishni osonlashtirardi. Docs - hujjat bilan ishlardi. Code editor - kod yozdirardi. Hozir esa hamma joyga AI tiqilyapti. Podcast qo‘yasiz - AI summary beradi. Map ochasiz - siz bilan gaplashgisi keladi. Search qilasiz - oddiy linklar o‘rniga hallucination aralash “smart answer” chiqadi. Yaxshi ishlayotgan productga AI yopishtirishadi, lekin product yaxshilanmaydi. Aksincha sekinlashadi, chalkashadi, ishonchsizroq bo‘ladi. Eng qizig‘i, bularning hammasi “user experience” nomi bilan sotiladi. Lekin ko‘p joyda motivatsiya boshqa: investor ko‘rsin, retention oshsin, subscription sotilsin, “AI strategy” bor bo‘lsin, valuation chiroyli ko‘rinsin. Men AI’ga qarshi emasman. Umuman. Aksincha, har kuni ishlataman. AI menga real leverage beradi. Vaqt tejaydi. Ishni tezlatadi. Ba’zi joylarda zo‘r. Lekin AI har doim ham kerakli narsa emas. Meni o‘ylantirayotgan joy shu: AI bizga rostdan ham ko‘proq value beryaptimi? Yoki kompaniyalar bizni sekin-sekin yana bir subscription, yana bir token limit, yana bir premium plan tomonga olib ketyaptimi? Chunki tarix bitta narsani ko‘p marta ko‘rsatgan: avval product siz uchun ishlaydi. Keyin siz product uchun ishlay boshlaysiz. @mabrur_dev

  • O'zimizning qora ko'zlar yaratgan flutter dasturlarning ba'zilarida bir muammo doim uchrab turadi. UI-ni Android 15+ uchun sozlamaslik. (Edge-to-edge) Shaxsan o'zim test uchun Android 16 qurilmamni ishlataman (hozircha iphone yo'q, nasib qilsa olarman). Fikrimcha UI-ni android uchun sozlash muammosi kelib chiqish sababi, ko'pchilik flutter dasturchilar testlash uchun real iphone yoki emulator ishlatishadi va Android chetda qoladi. Bu UI muammosi asosan 'page' va 'modal bottom sheet' pastki qismlarida uchraydi. Yechim sifatida SafeArea yoki MediaQuery-dagi paddingOf dan foydalanish mumkin. Eslatma. 'Modal bottom sheet' ni SafeArea-ga o'rash xato. Sababi ios-da Flutter o'zi avtomatik bottom-ga joy tashlagani sababli, SafeArea-ga o'raganda bottom sheet 'Home indicator' dan ko'tarilib qolishi mumkin, ya'ni 2 martta padding qo'shilib qoladi. Xulosa. Android ham OS va Android-chilar ham odam, irqchilikni to'xtataylik 😄 #Flutter

  • https://youtu.be/-irax5qu6xk?si=grxYfcK6mtZ5Eto3

  • #gg 😁

  • Flutter 3.44 va Dart 3.12, o'zgarishlar katta. https://medium.com/flutter/whats-new-in-flutter-3-44-b0cc1ad3c527 https://dart.dev/blog/announcing-dart-3-12

  • Yaxshi yangiliklar hali oldinda https://medium.com/@yurinovicow/flutter-dart-will-have-primary-constructors-soon-54b8ba50b625

  • Dio ishlatasizmi? Unda bu xatoni siz ham qilyapsiz 👇 "Bad state: Cannot emit after close" — ko'pchilik bu xatoga duch keladi, lekin asl sababini bilmaydi. Yangi videoda: → Xato qayerdan chiqadi → Dio CancelToken nima → Qanday professional yechim bor P.s: Videoda Flutter Bloc'ga contributor bo'lish uchun nimalar qilganimni ham gapirdim 👀 ▶️ https://youtu.be/tSqQltFguCM @ahadjonovss

  • Dartda Union types va Null safety. Union type - bu o'zgaruvchining bir nechta har xil turdagi qiymatlarni qabul qila olish imkoniyati va u 2 turga bo'linadi: Tagged va Untagged. Untagged union (int?, String?) - bu turda qiymat qaysi turga mansubligi uchun alohida konteyner ishlatilmaydi. Masalan int? o'zgaruvchisi xotirada yo int obyektini yoki singleton bo'lgan Null sinf obyektini saqlaydi. Tagged union (Sealed class) - bu mantiqan bir-biriga bog'liq turlarni bitta umumiy nom ostida birlashtirish (Sum types). sealed class yordamida biz chegaralangan ierarxiya yaratamiz. num sinfi ham xotirada int yoki double bo'la oladi. Dartning 2.12 versiyadan keyin kiritilgan Sound Null Safety bevosita Union type nazariyasiga asoslangan. Aynan shu versiyadan keyin iyerarxiya 2 ga bo'lingan: Nullable (Null sinf o'zi) va Non-nullable (Object, int, String etc). Manbalar: 1. Medium: Link 2. Union type: Link 3. Null safety: Link 4. Null class: Link #Flutter

  • Qiziq bir savol: Dasturlashning zavqli tomoni bu 'manual coding' (qo'lda kod yozish). Birgina bug ortidan uyqusiz tunlar, bug fix qilingandan keyingi zavq va hokazo. AI bu zavqni bizdan olib qo'yayotgandek menimcha. Sizning fikringiz menga qiziq, nima deb o'ylaysiz, kelajakda 'coding' qismini to'liq AI bajarishga o'tsa, biz nimadan zavq olishimiz mumkin.

  • Xayr CocoaPods, Salom SwiftPM. Flutter 3.44 versiyadan boshlab CocoaPods o'rniga SwiftPM default dependency manager bo'ladi. https://blog.flutter.dev/saying-goodbye-to-cocoapods-swift-package-manager-is-soon-the-default-in-flutter-645a92714a57

  • https://medium.com/@dfarkhod/suniy-idrok-aslida-u-qanday-ishlaydi-hamma-tushunadigan-tilda-07f152d6b1a0

  • runApp vs runWidget. runApp(Widget app). Asosiy vazifasi siz bergan vidjetni (masalan MaterialApp) olib, uni wrapWithDefaultView metodi orqali View vidjetiga o'raydi va qurilmaning asosiy ekrani (PlatformDispatcher.implicitView) ichiga joylashtiradi. runWidget(Widget app). runApp-dan farqli o'laroq u avtomatik ravishda vidjetni View bilan o'ramaydi. Siz o'zingiz qaysi vidjet qaysi ekranga chiqishini belgilaysiz. Bu ayniqsa bir necha oyna (multi-window) bilan ishlash uchun. Masalan, Android studio va Emulator bir-biridan alohida oynada birgalikda ishlaydi, runWidget asosan shunday logika uchun foydali. Har ikkala funksiya ham quyidagi qatordan keyin oxir-oqibat ichki holatda _runWidget metodini chaqiradi. final WidgetsBinding binding = WidgetsFlutterBinding.ensureInitialized(); Agar yuqoridagi funksiyalarni ikkinchi marta boshqa vidjet bilan chaqirsangiz, u butun ilovani o'chirib qayta qurmaydi. Buning o'rniga u yangi vidjetni eskisiga solishtiradi (diffing) va faqat o'zgargan qismlarini yangilaydi (xuddi setState kabi). Doc-da aytilishicha, Flutter ilova yopilayotganda vidjetlarni avtomatik ravishda dispose qilmaydi. Sababi telefon quvvatdan uzilishi yoki ilova crash bo'lishi mumkin va Flutter buni oldindan bilmaydi. Agar resurslarni yopish kerak bo'lsa (masalan fayl yoki kamera), AppLifecycleListener-dan foydalanish kerak. Qo'shimcha manbalar: 1. runApp: Link 2. runWidget: Link #Flutter

Flutter Notes — tgindex