IT with Bobur👨‍💻


Kanal geosi va tili: O‘zbekiston, O‘zbekcha
Toifa: Bloglar


Easy Flutter
Tirikchilikda endi nimayam derdik:
tirikchilik.uz/itwithbobur

Связанные каналы

Kanal geosi va tili
O‘zbekiston, O‘zbekcha
Toifa
Bloglar
Statistika
Postlar filtri


Kunning tezkor Flutter maslahati! Agar siz ilova yaratayotgan bo‘lsangiz va ekranning pastki qismida doimiy joylashgan tugmalar bo‘lishini istasangiz—masalan, 'Tasdiqlash' yoki 'Bekor qilish' opsiyalari—Scaffold vidjetining persistentFooterButtons xususiyatini tekshirib ko‘ring. Bu foydalanuvchi kontentni skroll qilganda ham doimiy ravishda ko‘rinib turadigan tugmalar qatorini qo‘shishning oddiy usuli.

Men yaqinda shu xususiyat bilan ishlayapman va u ayniqsa shakllar yoki dialog oynalarida juda qulay ekan. Chunki doimiy amal tugmalarini qo‘shish orqali UI ni tartibli saqlash mumkin. Faqatgina tugmalarni List ko‘rinishida joylashtiring (masalan, ElevatedButton yoki TextButton), va Flutter qolgan ishni o‘zi hal qiladi.

Bonus: u tugmalarni avtomatik tarzda chiroyli joylashtiradi, shuning uchun ortiqcha layout sozlashlarga ehtiyoj qolmaydi.

Siz ham loyihalaringizda bundan foydalanayapsizmi? Qanday qilib uni uslubiy jihatdan o‘zgartirayapsiz yoki moslashtirayapsiz? Fikrlaringizni eshitish qiziq bo‘lardi!

Manba: link

#Flutter


Did you know?

You can run "flutter run --route /path/to/route" to start your Flutter app from a specific route.

This works with named routes (nav 1.0) and the router APIs (nav 2.0).

Super useful for debugging nested routes when you need to hot-restart.

=====

Bilasizmi?

Siz flutter run --route /path/to/route buyrug‘ini ishga tushirib, Flutter ilovangizni ma’lum bir marshrutdan (route) boshlab yuklashingiz mumkin.

Bu usul nomlangan marshrutlar (Navigation 1.0) va Router API (Navigation 2.0) bilan ishlaydi.

Ichki marshrutlarni (nested routes) nosozliklarni tuzatishda (debugging) va hot-restart qilganda juda foydali! 🚀

Manba: link


Flutter Notes dan repost
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


Mirjalol Abdunazarov dan repost
📌 Flutter uchun AutoRoute paketi – Sizga kerakmi?

🚀 AutoRoute – Flutter ilovalari uchun qulay va kuchli marshrutizatsiya paketi. Keling, uning yaxshi va yomon tomonlarini ko‘rib chiqamiz!

✅ AutoRoute'ning afzalliklari:
🔹 Deklarativ yo‘nalish yaratish (Route Management) – kodni tartibli qiladi.
🔹 Deep linking va guard’lar orqali xavfsizlikni oshirish.
🔹 Navigator 2.0 bilan mukammal integratsiya.
🔹 Generatsiya qilinadigan kod (code generation) – qo‘lda yozishdan qutqaradi.

❌ Kamchiliklari:
🔸 O‘rganish uchun biroz vaqt talab etiladi.
🔸 Kod generatsiyasi uchun build_runner kerak.
🔸 Kichik loyihalar uchun ortiqcha murakkablik yaratishi mumkin.

🎯 Qanday loyihalar uchun yaxshi?
✅ Katta va murakkab navigatsiyaga ega ilovalar.
✅ Deep linking ishlatiladigan dasturlar.
✅ Kodning strukturasini toza saqlash muhim bo‘lgan loyihalar.

🚫 Qanday loyihalar uchun mos emas?
❌ Oddiy va kichik ilovalar.
❌ Static routing ishlatiladigan loyihalar.

🔗 O‘rnatish va qo‘llanilishi haqida batafsil ma’lumot:
📎 AutoRoute - pub.dev

Siz AutoRoute’dan foydalanasizmi? Fikringizni izohlarda qoldiring! 👇

Youtube | Linkedin | Telegram

#flutter #navigation #auto_route


MobilDasturchi.Uz dan repost
Dart 3.8 yangilik! 🚀

Endi Null-aware elements yordamida kolleksiyalarda null tekshiruvini ancha qisqartirish mumkin!

Masalan, quyidagi kod:

Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
if (widget.child != null) widget.child!,
],
)

endi shunday yoziladi:

Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
?widget.child,
],
)

Yuqoridagi ?widget.child yozuvi null bo‘lmagan taqdirda faqat widget.child ni qo‘shadi. Kode ancha ixcham va tushunarli bo‘ldi!

Siz bu "shirin" imkoniyatni kutyapsizmi? 🫠

👍 – Ha, albatta!
👌 – Chiqqanda ko‘ramiz
👎 – Foydasini ko‘rmayapman



@dasturchiMobile


Widget Master | Flutter dan repost
CustomPaint – O‘z Dizayningni O‘zing Chiz!

Ko‘pchilik Flutterda UI yaratishda faqat tayyor widgetlardan foydalanadi, lekin agar o‘z dizayningizni xohlagancha chizishni istasangiz, CustomPaintdan foydalaning.

Bu widget yordamida oddiy shakllardan tortib murakkab grafik elementlargacha yaratishingiz mumkin. Masalan, doiralar, chiziqlar, gradient fonlar yoki hatto maxsus bezaklar qo‘shishingiz mumkin.

📌 CustomPaint qachon kerak?
🔹 Oddiy widgetlar bilan amalga oshirib bo‘lmaydigan dizaynlar kerak bo‘lsa
🔹 Diagramma, progress bar yoki interaktiv chizmalar yaratmoqchi bo‘lsangiz
🔹 Ilovaga o‘ziga xos brendlangan UI qo‘shishni istasangiz

CustomPaintning ishlash mantig‘i oddiy siz CustomPainter klassini yaratib, ichida Canvas va Paint yordamida chizish ishlarini bajarishingiz mumkin. Ya’ni, oddiy Container yoki Stack yetarli bo‘lmagan joyda, CustomPaint yordamida istalgan shakl va animatsiyalarni qo‘shishingiz mumkin.

Agar Flutter’da haqiqatan ham original va kreativ UI yaratmoqchi bo‘lsangiz, CustomPaint bilan ishlashni o‘rganish shart!

@WidgetMaster


Mirjalol Abdunazarov dan repost
🛤 Flutter Routing: Fluro vs GoRouter 🛤

Flutter dasturchilari ko‘pincha Fluro yoki GoRouter paketlaridan birini tanlaydi. Qaysi biri yaxshiroq? Bugun shu mavzuda gaplashamiz. 👇

✅ Fluro'ning Afzalliklari

🔹 Tez va engil – Kichik loyihalar uchun ideal.
🔹 String asosida ishlaydi – Marshrutlarni oddiy String orqali boshqarish mumkin.
🔹 Dynamic routing – Dinamik URL parametrlarini qo‘llab-quvvatlaydi.
🔹 Deep Linking – Xavfsiz va sodda usulda deep linking amalga oshirish mumkin.

❌ Fluro'ning Kamchiliklari

🔻 Navigator 2.0 bilan mos emas – Flutter’ning yangi navigatsiya tizimiga mos kelmaydi.
🔻 Qo‘lda sozlash kerak – Har bir route uchun Handler yozish lozim.
🔻 Shell route yoki redirect yo‘q – Bottom navigation yoki yo‘naltirish uchun qo‘shimcha kod yozish talab etiladi.

✅ GoRouter'ning Afzalliklari

🌟 Flutter rasmiy tavsiya qilgan router – Navigator 2.0 ga mos.
🌟 Deklarativ yondashuv – MaterialApp.router bilan oson integratsiya.
🌟 Redirect va ShellRoute mavjud – Bottom navigation va yo‘naltirish oson.
🌟 Deep linking osonroq – URL asosida avtomatik yo‘naltirish ishlaydi.

❌ GoRouter'ning Kamchiliklari

⚠️ Biroz og‘irroq – Fluro'ga nisbatan ko‘proq resurs talab qiladi.
⚠️ O‘rganish qiyinroq – Yangi foydalanuvchilar uchun murakkabroq.
⚠️ Flexibility kamroq – Navigator.push kabi imperativ usullardan foydalanish qiyinroq.

📌 Xulosa:

🔹 Kichik va yengil ilovalar uchun Fluro yaxshi tanlov.
🔹 Katta va murakkab ilovalar uchun GoRouter tavsiya etiladi.

Siz qaysi routerdan foydalanasiz? Fikrlaringizni kommentga yozib qoldiring! 👇 😊

Youtube | Linkedin | Telegram

#fluro #go_router #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


Flutterda Debounce va Throttle haqida.

Ushbu usullar ilovamizni samaraliroq ishlashini taʼminlash va ortiqcha resurs iste'molini oldini olishda juda muhim o‘rin tutadi.

Debounce – bu funksiya qisqa vaqt ichida qayta-qayta chaqirilishining oldini olish uchun qo‘llaniladigan usul. Masalan, foydalanuvchi matn kiritayotganda, har bir belgini yozishi bilan API so‘rovlari yuborilsa, serverga keraksiz yuk tushadi. Debounce yordamida esa, foydalanuvchi ma'lum vaqt davomida yozishni to‘xtatgach, bitta so‘rov yuboriladi. Shu tarzda, APIga bo‘lgan murojaatlar sezilarli darajada kamayadi va ilovaning ishlash samaradorligi oshadi.

Throttle – bu funksiya belgilangan vaqt oralig‘ida maksimal bitta marta chaqirilishni kafolatlaydi. Bu usul ayniqsa scroll hodisalari yoki tugmani bosish kabi tez-tez yuz beradigan voqealarda qo‘llaniladi. Misol uchun, foydalanuvchi cheksiz scroll qilganda, ilova har kichik scroll uchun yangilanishni amalga oshirishi o‘rniga, throttle yordamida yangilanishlar ma'lum intervallarda yuz beradi. Natijada, ilovangizning javob berish tezligi va ishlash samaradorligi yanada barqaror bo‘ladi.

Ushbu yondashuvlar yordamida siz ilovangizdagi keraksiz va tez-tez yuz beradigan so‘rovlar sonini kamaytirib, tizim resurslarini optimal darajada ishlatishingiz mumkin.

#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 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


Aytaylik flutterda switcher bor va bilamizki uni hechqanday size, width va height'lari yo'q. Lekin biz uni sizeni o'zgartrishimiz kerak. Qanday qilib kichraytrishimiz yoki kattalashtrishimiz mumkin?


🧑‍💻 Flutter’da switch’ni to‘g‘ridan-to‘g‘ri width/height bilan boshqara olmaysiz, ammo quyidagi usullar bilan o‘lchamini sozlash mumkin:

- Transform.scale
Transform.scale(
scale: 0.7, // Kichik: 0.7, katta: 1.5 va hokazo
child: Switch(
value: isSwitched,
onChanged: (value) => setState(() => isSwitched = value),
),
),

- FittedBox
FittedBox(
child: Switch(
value: isSwitched,
onChanged: (value) => setState(() => isSwitched = value),
),
),

- flutter_switch

Agar to‘liq boshqaruv kerak bo‘lsa:
dependencies:
flutter_switch: ^0.3.2
FlutterSwitch(
width: 50.0, height: 25.0,
value: isSwitched,
onToggle: (val) => setState(() => isSwitched = val),
),

Nima deb o'ylaysiz qaysi usul sizga ko‘proq ma’qul?

🚀 @ITwithBobur






Memorizing words
Simple game UI for memorizing English words
Bahodir Yoqubov

https://www.figma.com/community/file/1326523014906197544


MobilDasturchi.Uz dan repost
🎉 Flutter 3.29 va Dart 3.7 chiqdi!

Yangilanishlar haqida bilishingiz kerak bo‘lgan muhim narsalar

💪 Yaqinda bo‘lgan yangilanishlardan keyin ham Flutter jamoasi bizga yangi imkoniyatlarni taqdim etdi. Eng muhim o‘zgarishlar:

⚡️ WEB uchun HTML-render olib tashlandi
Endi asosiy e'tibor CanvasKit va WebAssembly ga qaratilgan. Bu esa yanada yaxshi moslashuvchanlik va yuqori ishlash tezligini ta’minlaydi.

⚡️ Material va Cupertino o‘zgarishlari
✅ Circular va Linear ProgressIndicator endi Material3 standartiga to‘liq moslashgan. Ular yanada chiroyli va zamonaviy ko‘rinishga ega.
✅ CupertinoSheetRoute — iOS uslubidagi BottomSheet modallari uchun yangi imkoniyat. Oldin bunday effektlar uchun qo‘shimcha kutubxona o‘rnatish talab qilingan.
✅ CupertinoNavigationBar endi pastki (bottom) vidjetni qo‘llab-quvvatlaydi. Masalan, iOS uslubidagi qidiruv maydonini qo‘shish mumkin.

⚡️ Dvigatel yangilanishlari
✅ Impeller dvigatelida barqarorlik va ishlash tezligi yaxshilandi, Vulkan’da ba’zi muammolar tuzatildi.
✅ iOS’da Skia qo‘llab-quvvatlovi to‘liq olib tashlandi, bu esa tayyor ilovalar hajmini kichraytiradi.

⚡️ Kod endi asosiy oqimda bajariladi
Dart kodi endi alohida UI oqimida emas, asosiy oqimda bajariladi. Bu esa native funksiya lar bilan ishlashni tezlashtiradi!

🚀 Bu Flutter uchun katta qadam! Aytganlaridan amaliy natijagacha juda tez yetib kelishdi, bu esa juda quvonarli!

🖥 Batafsil ma’lumot rasmiy maqolada!

🔥 Siz ushbu yangilanishlarni kutgan edingizmi? Fikrlaringiz qanday?


#telegram #ios

Men ios ishlatmaganman lekin figma ga qarab chizyabman. Sal o'xshabdimi =)

164 0 0 12 13

Dartda "dynamic" kalit so'zi haqida.

dynamic kalit so'zi o'zgaruvchi oldidan ishlatiladi va o'zgaruvchini dinamik qiladi. Ya'ni dinamik o'zgaruvchi har qanday turdagi qiymatni qabul qila oladi. (int, string, va hokazo).

Dart dasturlash tili "type safe" hisoblanadi va toifani tekshirish (type checking) uchun bir qancha statik toifalar (int, String, etc)-dan foydalanadi va tur xavfsizligi (type safety) uchun "dynamic" kalit so'zidan foydalanmaslikni maslahat berishadi.

Official doc : Link

#Dart


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


Flutter Notes dan repost
Dartda Stream turlari haqida.

Stream (oqim)-lar Dart tilining asosiy qismidir va Flutter asinxron dasturlashni boshqarish uchun ulardan foydalanadi.

Stream asinxron hodisa (event)-lar ketma-ketligi bo'lib, asosiy ish (execution)-ni bloklamasdan Flutter ilovasida user input, tarmoq so‘rovlari va boshqa asinxron vazifalarni bajarish uchun juda muhimdir.

Dart-da Stream-ning ikki turi mavjud :
1. Single Subscription Stream.
2. Broadcast Stream.

Single Subscription. (yagona ulanish).
Bu turdagi Stream-lar faqat bitta tinglovchi (listener)-ga stream-ni tinglash imkonini beradi. Tinglovchi ulanganidan keyin boshqa hech bir tinglovchi bir xil stream-ga ulana olmaydi.

Broadcast.
Boshqa tomondan, Broadcast Stream-lar bir nechta tinglovchilarga bir xil stream-ga ulanish imkonini beradi. Bu bir vaqtning o'zida dasturingizning bir nechta qismlariga voqea (event)-larni translyatsiya qilmoqchi bo'lsangiz foydali bo'ladi.

Manba : Link

#Flutter

20 ta oxirgi post ko‘rsatilgan.