Ali Xr


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


Flutter Developer 😎
Bu kanalda dasturlash haqida qiziqarli ma'lumotlar, yangiliklar, maqolalar va shaxsiy fikrlarimni ulashaman
@flutterorg
https://buymeacoffee.com/alixr
https://linktr.ee/ali.xr

Связанные каналы  |  Похожие каналы

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


🌀 Dart'da Future va async/await — nima, qanday ishlaydi, va qanday ishlatilmasligi kerak?

💡 Dastur ishlayotgan paytda ba'zida natija hoziroq emas, kelajakda tayyor bo'lishi mumkin. Masalan:
📡 serverdan ma'lumot kelishi,
🗂 fayl o'qilishi,
🌐 internet orqali so‘rov yuborilishi...

Shunday holatlarda Future ishlatiladi.

🔹 Future — bu nima?
Future — bu “kelajakdagi natija”.
U hozircha yo‘q, lekin bir payt kelib tayyor bo‘ladi — yoki xatolik bilan tugaydi.

Future getUserName() {
return Future.delayed(Duration(seconds: 2), () => 'Alimardon');
}
👉 Bu funksiya 2 sekunddan keyin 'Alimardon' qiymatini qaytaradi.

🔹 Async/Await — bu qanday ishlaydi?
async funksiyani asinxron qiladi — ya’ni uning ichida await ishlatish mumkin bo'ladi.

Future greetUser() async {
final name = await getUserName();
print('Salom, $name!');
}

➡️ await — Future'ni kutadi. U holda kod “pauza” qiladi, lekin UI muzlamaydi.

⚠️ Nima qilmang?
🚫 Future ichidagi then() bilan callbacklar zanjiri yasab, kodni spaghetti holga keltirmang:

getUserName().then((name) {
getUserAge().then((age) {
print('Name: $name, Age: $age');
});
});

Bu o‘qish qiyin, debug qilish ham charchatadi.

Nima qiling?
✅ async/await dan foydalaning. Kodingiz toza, tushunarli va maintainable bo‘ladi:

Future showUserData() async {
final name = await getUserName();
final age = await getUserAge();
print('Name: $name, Age: $age');
}


📌 Yodda tuting:
await faqat async funksiyada ishlaydi.

Future bu “natijasiz” Future.

Har bir await UI ni muzlatmaydi, lekin kod oqimini kutdiradi.

try/catch bilan xatoliklarni tuting:

try {
final data = await fetchData();
} catch (e) {
print('Xatolik: $e');
}


Agar sizning kodda Futurelar bor bo‘lsa — ularni to‘g‘ri kuting. await sizning eng yaqin do‘stingiz bo‘lsin. 👊

Agar ushbu post foydali bo‘lsa, ulashing, savollaringiz bo‘lsa kommentda yozing 💬
#dart #flutter #async #future #programming

@alixr @flutterorg


“Container bilan qilinmaydigan 5 narsa”

Flutter o‘rganayotganlar orasida Container — universal vosita, “hamma narsa shu bilan hal bo‘ladi”, degan noto‘g‘ri tushuncha bor.

Lekin aslida, professional UI qilaman desangiz, Containerni faqat zarur joyda ishlatish kerak.
Keling, nima uchunligini 5ta misolda ko‘rib chiqamiz:



1. Containerda onTap ishlamaydi.

Ko‘pchilik Containerga onTap yozib qo‘yadi va hayron qoladi: “Nega ishlamayapti?”

❌ Noto‘g‘ri:
Container(
onTap: () => print("Tapped"), // bu hech qachon ishlamaydi
)

✅ To‘g‘ri:
InkWell(
onTap: () => print("Tapped"),
child: Container(...),
)
Agar bosilganda animatsiya ko‘rinishini xohlasangiz, InkWell yoki GestureDetector ishlating.



2. color va BoxDecoration birga ishlamaydi.

Agar Containerda decoration ishlatayotgan bo‘lsangiz, color:ni ishlatmang.
Chunki color:ni decoration: ichida berish kerak.

❌ Noto‘g‘ri:
Container(
color: Colors.red,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
),
)

✅ To‘g‘ri:
Container(
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(10),
),
)
3. Performance uchun Container har doim yaxshi emas.

Container — bu multi-purpose widget. U padding, margin, color, align, size… hammasini o‘zida jamlagan.
Lekin Flutter’da minimal widget tree ishlatish yaxshi odat.

Masalan:

Padding(child: Text())
ColoredBox(color: ..., child: ...)
Align(alignment: ..., child: ...)
SizedBox(height: ..., width: ...)

Shularni to‘g‘ri joyda ishlatsangiz, build time ham, rebuild time ham kamayadi.



4. Container ba’zi joylarda infinite size beradi.

Agar parent widget size bermasa, Container “cheksiz” bo‘lib qolishi mumkin.
Bu esa layout error, overflow yoki scroll bug’lariga sabab bo‘ladi.



5. Ripple effekt ko‘rinmaydi, agar Material bo‘lmasa

Agar siz InkWell ishlatayotgan bo‘lsangiz, lekin bosilganda effekt (splash/ripple) ko‘rinmayotgan bo‘lsa — bu ko‘pincha Material widget yo‘qligidan bo‘ladi.

InkWell faqat Material ichida turganida chiroyli effekt beradi.

Bu holatda GestureDetector yaxshiroq variant bo‘lishi mumkin, lekin unda ripple yo‘q.



Professional kod yozish — bu kerakli joyda kerakli widget tanlay olish.

Container – yomon emas. Lekin faqat Container – yomon odat.



Siz ham hozirgacha Containerdan ko‘p foydalangansizmi?
Kommentda Container bilan bog‘liq biron “LOL” holatingiz bo‘lsa, yozib qoldiring!

@alixr


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish


ValueNotifier va ChangeNotifier – Farqi nimada?

Flutter-da ValueNotifier va ChangeNotifier reaktiv holat boshqarish uchun ishlatiladi. Ikkalasi ham UI-ni yangilash uchun ishlatiladi, lekin ularning ishlash mexanizmi farqlanadi.



ValueNotifier – Soddalashtirilgan reaktiv yondashuv

Agar faqat bitta qiymat (value) ni kuzatish kerak bo‘lsa, ValueNotifier eng optimal yechim. U notifyListeners() chaqirmasdan ham UI-ni avtomatik yangilaydi.

Misol: Counter App
class CounterModel {
final ValueNotifier counter = ValueNotifier(0);

void increment() {
counter.value++;
}
}
Foydalanish:
ValueListenableBuilder(
valueListenable: counterModel.counter,
builder: (context, value, child) {
return Text('$value', style: TextStyle(fontSize: 24));
},
);

➡️ ValueNotifier faqat bitta o‘zgaruvchini kuzatish uchun ishlatiladi.



ChangeNotifier – Bir nechta o‘zgaruvchilarni boshqarish

Agar bir nechta qiymatlarni boshqarish kerak bo‘lsa, ChangeNotifier ishlatish tavsiya etiladi. notifyListeners() chaqirish orqali barcha Consumer yoki Provider bog‘langan widgetlarni yangilaydi.

Misol: Todo List App
class TodoModel extends ChangeNotifier {
List todos = [];

void addTodo(String todo) {
todos.add(todo);
notifyListeners();
}
}
Foydalanish (Provider bilan):
Consumer(
builder: (context, todoModel, child) {
return ListView.builder(
itemCount: todoModel.todos.length,
itemBuilder: (context, index) {
return ListTile(title: Text(todoModel.todos[index]));
},
);
},
);

➡️ ChangeNotifier bir nechta qiymatlarni boshqarish uchun mos keladi.



Xulosa

Agar faqat bitta qiymatni kuzatish kerak bo‘lsa – ValueNotifier ishlatish osonroq va engillashtirilgan.
Agar bir nechta qiymat yoki murakkab holat bo‘lsa – ChangeNotifier yaxshiroq tanlov.

Siz qaysi birini ishlatgansiz? Fikrlaringizni kutaman!

@alixr


📌 Dart’da final va const – Qachon qaysi biri ishlatiladi?

Dart’da final va const o‘zgaruvchilari immutable (o‘zgarmas) ma’lumotlar bilan ishlash uchun ishlatiladi. Lekin ular orasida farq bor.

🔹 final – runtime-da belgilanadi

final o‘zgaruvchi faqat bir marta qiymat qabul qilishi mumkin, lekin u runtime (dastur ishlayotgan payt) da aniqlanadi.

To‘g‘ri ishlatish:
void main() {
final int yil = DateTime.now().year; // Runtime-da aniqlanadi
print(yil);
}

Xatolik:
void main() {
final int x = 10;
x = 20; // Xatolik: final o‘zgaruvchining qiymati o‘zgartirilmaydi!
}

🔹 const – compile-time da belgilanadi


const esa mutlaqo o‘zgarmas qiymat bo‘lib, u dastur kompilyatsiya qilinayotganda aniqlanib, hech qachon o‘zgartirilmaydi.

To‘g‘ri ishlatish:
const double pi = 3.1415; // Compile-time constant

Xatolik:
void main() {
const yil = DateTime.now().year; // Xatolik: runtime qiymatni const-ga berib bo‘lmaydi!
}

🎯 const bilan immutable obyektlar


const faqat oddiy o‘zgaruvchilarga emas, balki obyektlarga ham qo‘llanilishi mumkin.

class Person {
final String name;
const Person(this.name); // const konstruktor
}

void main() {
const p1 = Person("Ali");
const p2 = Person("Ali");
print(identical(p1, p2)); // true – bir xil obyekt yaratildi
}

🔥 final vs const – Qachon qaysini ishlatish kerak?

✅ Agar qiymat dastur ishlashi davomida o‘zgarishi mumkin bo‘lsa, final ishlating.
✅ Agar qiymat butunlay o‘zgarmas bo‘lsa va oldindan aniqlansa, const ishlating.

Siz final va const ni qachon ishlatasiz? Kommentariyada fikrlaringizni qoldiring!

@alixr


setState ni qachon ishlatmaslik kerak?

setState – Flutter’dagi eng oddiy state management usuli, lekin noto‘g‘ri ishlatilsa, quyidagi muammolarga olib keladi:

Keraksiz rebuild’lar – Butun widget qayta chiziladi, hatto kichik o‘zgarishlar bo‘lsa ham.
Ma’lumotlarning yo‘qolishi – Widget dispose() bo‘lsa, state ham yo‘qoladi.
Kod murakkablashishi – Katta state’larni setState bilan boshqarish chalkash bo‘ladi.

❌ Yomon usul:
Bu kod har safar setState chaqirilganda butun widgetni qayta chizadi, bu esa samaradorlikni pasaytiradi.

✅ Yaxshi usul: ValueNotifier bilan optimallashtirish
ValueNotifier faqat Text widget’ini qayta chizadi va ortiqcha resurs sarfini oldini oladi.

Qachon setState dan foydalanmaslik kerak?
Global yoki kompleks state’lar uchun → Provider, Riverpod, Bloc and etc ishlating.
Ma’lumotlarni saqlash kerak bo‘lsa → Hive, SharedPreferences, Isar yoki SQLite and etc ishlating.
Ko‘p qayta chiziladigan UI elementlari bo‘lsa → ValueNotifier yoki ChangeNotifier ishlating.

@alixr


Menham el qatori trenddan qolmay deb Ghibli style ga qiziqib ko’rdam. Ajoyib tog’rimi 😊

@alixr


Flutter Optimization Hack: const bilan rebuild’larni kamaytiring

Nega const muhim?

const o‘zgaruvchilar va vidjetlar Flutter’da bir marta yaratiladi va qayta ishlatiladi, bu esa:

CPU yuklamasini kamaytiradi
Rebuild’larni minimallashtiradi
UI’ning tezroq ishlashiga yordam beradi

Qanday ishlaydi?


❌ Yomon yondashuv:
Container(
color: Colors.blue,
child: Text("Hello, Flutter!"),
)
Bu har safar build() chaqirilganda yangi Container yaratadi.

✅ Yaxshi yondashuv:
const Container(
color: Colors.blue,
child: Text("Hello, Flutter!"),
)
Bu Container ni bir marta yaratadi va uni qayta ishlatadi.

Qachon const ishlatish kerak?
• O‘zgarmas (immutable) vidjetlar bilan
• build() metodi tez-tez ishlaydigan joylarda
• Statik va o‘zgarmas matn yoki ikonka elementlarida

@alixr


Flutter Performance Tip: keepAlive bilan silliqroq skroll qilish

Nega keepAlive muhim?

Agar keepAlive ishlatilmasa, ekrandan chiqib ketgan vidjetlar dispose bo‘lib, qayta skroll qilinganda yana build bo‘ladi. Bu quyidagi muammolarga olib keladi:
Scroll pozitsiyasi yo‘qoladi
Keraksiz rebuild’lar yuz beradi
Kontent titraydi yoki miltillaydi
Animatsiyalar to‘xtab qoladi

✅ keepAlive dan foydalaning, agar:
• Element ichki holat (state) saqlab qolishi kerak bo‘lsa
• Vidjet initsializatsiyasi og‘ir (expensive) bo‘lsa
• UI animatsiyalar yoki transition’lar ishlatsa
• Foydalanuvchi eski elementlarga qayta skroll qilish ehtimoli yuqori bo‘lsa

❌ keepAlive dan foydalanmang, agar:
• Ro‘yxatda yuzlab yoki minglab elementlar bo‘lsa
• Elementlar juda oddiy va stateless bo‘lsa
• Xotira (memory) muammosi bo‘lsa

@alixr


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish


Today’s plan was done

@alixr


Spring is a very beautiful time of the year, isn't it?

Photo by me 🤭

@alixr

190 0 0 10 15



Ramazon oyi muborak bo’lsin!

@alixr


Agar ishlash samaradorligini oshirmoqchi bo‘lsangiz, RepaintBoundary vidjetidan foydalaning.

Vidjetni RepaintBoundary bilan o‘rashingiz natijasida Flutter ushbu vidjet uchun alohida qatlam yaratadi. Buning ma’nosi:
• Agar RepaintBoundary tashqarisidagi narsa o‘zgarsa, Flutter uning ichidagi vidjetni qayta chizmaydi.
• Agar RepaintBoundary ichidagi narsa o‘zgarsa, faqat shu qismi qayta chiziladi, butun daraxt emas.

Qachon RepaintBoundary ishlatmaslik kerak?

🚫 Agar vidjet har doim yangilanib turishi kerak bo‘lsa, masalan, animatsiyalangan yuklanish paneli (progress bar), uni RepaintBoundary bilan o‘rash foyda bermaydi, hatto xotira sarfini oshirishi mumkin.

@alixr


Mobil qurilmalarda yana muhim etibor berishimiz kerak bo’lgan qism. Kerak bo’lib qoladi ☺️

@alixr


Magic Keyboard dan keychron o’tganingizda, umuman boshqacha code yozayotganday hissiyot bo’ladi ekan ⌨️. High Profile bo’lsa тем более 👀

@alixr


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish


“IT sohasida ishlaganim uchun kunimning katta qismi kompyuter oldida o’tadi. O’tirgan holda ishlash esa salomatlikka o’z ta’sirini o’tkazmay qolmaydi. Shu sabab, bir oy oldin gymga qatnashni boshladim va o’zim uchun shuni angladim: bunga avvalroq kirishishim kerak edi! Harakat qilish nafaqat salomatlikni yaxshilaydi, balki ish unumdorligiga ham ijobiy ta’sir qiladi. IT’da ishlaydiganlarga tavsiya: sportni jadvalingizga qo’shishni kechiktirmang!

@alixr



20 ta oxirgi post ko‘rsatilgan.