Flutter Organization
68 subscribers
3 photos
1 link
Download Telegram
Prefer widget composition over functions
( Widget classlarni funksiyalardan afzal biling )
Kõpchilik biladiki, kod duplikatsiya yaxshi emas. Flutterda ishlash davomida esa biz kòpincha qayta ishlatiladigan widgetlar yaratamiz. Misol uchun, ilovada kòp ishlatilishi mumkin bòlgan CustomButton. Ammo, biz bu widgetni ikki xil yôl bilan yaratishimiz mumkin:
1) Widget class'lar orqali
2) Widget return type'iga ega funksiyalar orqali
Ammo, siz hech qachon widget class yaratish imkoniyati turganda widget qaytaruvchi funksiya yozmasligingiz tavsiya qilinadi. Buning sabablari quyidagilar:
1) Aniqki, funksiyalarda const constructor mavjud emas
2) Flutter funksiya orqali qaytarilgan widgetlarni har doim qayta build qilishga majbur. Sababi, u funksiya haqida hech qanday ma'lumotga ega emas.
3) Class'lar Widget tree'da òz òrinlariga egalar. Ammo, funksiyalarda bunday emas! Shu sababli, ularda BuildContext ham mavjud emas.
————————————————————
P.s: const constructor'larga rahmat deymiz, sababi widget class'larni keshlasa bòladi, ammo funksiyalar keshlanmaydi. Shu sababli, funksiyalar har doim qayta ishga tushadi.
👍1
#tests #flutter_tests

* Ancha vaqtdan beri deyarli hech narsa yozilmagan ekan. Inshaalloh yaqin orada ko'pchiligimiz qilishdan qochadigan, ko'p vaqt oladi deb o'zimizni ishontirib qo'ygan mavzu - testing bo'yicha darslik chiqarmoqchiman.

* Unda testlarning turlari, ahamiyati, testlar aslida vaqt oluvchi emas, uni ancha tejovchi ekani haqida ba'zi bilimlarni bo'lishib o'tmoqchiman.

* Video darslik davomida "Weather App" qilib ko'rsatishni rejalashtirdim. Unda biror-bir yerning ob-havosini aniqlash, o'z lokatsiyasi orqali kerakli ob-havoni olib kelish, ob-havoni keshlash va internetsiz ishlatish haqida, interceptorlarni ishlatish, SOLID, GRASP va ba'zi Design Patternlar haqida ham qo'limdan kelgancha ma'lumot berib o'tmoqchiman. App kichkina bo'lishi mumkin, ammo kattaroq app uchun ishlatishga kerakli barcha bilimlarni berishga yetarli bo'ladi deb umid qilaman.
🔥9
EPAMda intervyu jarayoni:
1) Dastlab, Òzbekistonda yashashimni bilgani uchun qaysi tilda gapirishimni afzal kòrishimni sòradi ( rus yoki ingliz ).
2) Bòladigan intervyu haqida qisqacha ma'lumot berib òtildi. Unga kòra, intervyu uch qismga: tanishish, texnik intervyu va kod yozish qismlariga bòlinishi aytildi.
~ Tanishuv qismi:
3) Qayerlarda ishlaganim, qanday proyektlarda qatnashganim ( agar proyektlar maxfiy saqlanishi kerak bòlgan bòlsa, aytsangiz tushunishadi ), Flutterni nega tanlaganim va Software Engineering bilan qancha vaqtdan beri shuğullanishimni sòrashdi. Proyektlarda mening ahamiyatim, kim sifatida qatnashishim, jamoada va yolģiz ishlaganda qanday ishlashim haqida qiziqishdi.
~ Texnik Intervyu
4) Test Driven Development:
  - Testlarning proyektdagi ahamiyati
  - Test qachon yozilishi kerakligi
  - Mockito
  - Unit Test va Widget Test orasidagi farq
5) Static Alaysys ( Linter rules ) - ahamiyati, qanday ishlatilishi, undagi qoidalar. Masalan, info, warning, erro va hokazo
6) Git.
    - Git haqida
    - merge va rebase orasidagi asosiy farq
7) State Managements
- BLoC, Provider va GetX haqida fikrimni sòrashdi ( agar middle kerak bòlsa, GetX haqida ular istayotgan narsani ayting )
8) REST Api, GraphQL, WebSocket
9) Dio va http package'lar haqida
10) Dio va http orasidagi farq. Qaysi biri afzalroq va buning sabablari haqida
11) Retrofit
12) Interceptors
13) Packages for local database. SharedPreference, SQFlite, ObjectBox, Hive.
14) Relational va NoSQL database'lar orasidagi farq.
15) Deeplinks. Navigator 2.0 orqali deeplinking qilishning yòli haqida
16) Implementing Native Code -> Method Channels, Event Channels
17) App LifeCycle for deeplinking ( foreground, background, cool restart )
18) Flutterni mobile ilovalardan boshqa maqsadlarda foydalanish haqida
19) SOLID haqida
20) Dependency Inversion va Dependency Injection orasidagi farq 😅
21) Statefull Widget Lifecycle.
22) Statefull Widget Lifecycle step by step explanation ( rebuilding times and so on )
Qolgan texnik savollar esimda emas.
~ Koding qismi:
1) Data member'lari hashlanmagan class'lar orasida compering ( equations )
2) Future, Future microtask, async await, sync vs async kodlash, logging qilish
Qolgan savollar aniq esimda emas. Yodimdan kòtarilibdi.
  Recruiter menga yuborgan xabardan parcha:
  "Hello!
Thank you for taking time to pass a technical interview in our company. Our expert have estimated you as a middle Flutter developer. Unfortunately, now we are looking for senior+ developers and can not make you an offer. Let's be in touch so that in the future we will be able to connect with and offer an interesting position for you!!!"


( 2022 yil, Iyul oyi )
👍7
Flutter Organization
#tests #flutter_tests * Ancha vaqtdan beri deyarli hech narsa yozilmagan ekan. Inshaalloh yaqin orada ko'pchiligimiz qilishdan qochadigan, ko'p vaqt oladi deb o'zimizni ishontirib qo'ygan mavzu - testing bo'yicha darslik chiqarmoqchiman. * Unda testlarning…
Yaqin orada ushbu video darslarni taqdim etishni boshlaymiz.

Asosiy urğu esa test yozishga qaratiladi.

Hech bõlmasa bir insonni test yozishga chaqira olsak, missiyamizga erishgan bôlamiz 😁
👍4
~ EPAMda intervyu jarayoni haqida yozgan edik.

~ Ikkinchi marta intervyuga kirgandan keyin esa boshqa savollar tushganini kòrdim. Boshqalar bilan maslahatlashib bildimki, har xil intervyu oluvchi developerlar har xil savollar berar ekan. Hindlar bilan interyvu qilishdan õzi asrasin 😁.

~ Men ba'zi savollar va ularga javoblarni notionda yozib qóygan edim. Ammo, qarasam, barbir intervyuda biror qolib yõq. Oxiri barbir tajriba va bilimga borib uriladi.
Kimda qanday natija bõlgan?

Bilaman, kõplar topshirib, reject olgan ekan )
👍2
Ramadan Kareem mubarak 🌙
4🎉3🔥2👍1
Forwarded from Ali Xr
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 @flutterorg
8👍1
Forwarded from Ali Xr
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:
Text(
"Hello, Flutter!",
style: TextStyle(fontSize: 16),
)

Har safar build() chaqirilganda, TextStyle obyekti qayta yaratiladi.

Yaxshi yondashuv:
const Text(
"Hello, Flutter!",
style: TextStyle(fontSize: 16),
)

Bu yerda TextStyle obyekti const bo‘lgani uchun Flutter uni qayta ishlatadi va keraksiz rebuild’larning oldi olinadi.

Qachon const ishlatish kerak?
• O‘zgarmas (immutable) vidjetlar bilan (Text, Icon, SizedBox, Padding, etc)
• build() metodi tez-tez ishlaydigan joylarda
• Statik va o‘zgarmas matn yoki ikonka elementlarida
• Stateless vidjetlarda imkon qadar ko‘proq

@alixr @flutterorg
3👍1
Forwarded from Ali Xr
🌀 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<String> 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<void> greetUser() async {
final name = await getUserName();
print('Salom, $name!');
}

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

⚠️ Nima qilmaslikni maslahat beraman?
🚫 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 qilishingiz mumkin?
async/await dan foydalaning. Kodingiz toza, tushunarli va maintainable bo‘ladi:
Future<void> showUserData() async {
final name = await getUserName();
final age = await getUserAge();
print('Name: $name, Age: $age');
}


📌 Yodda tuting:

• await faqat async funksiyada ishlaydi.

• Future<void> 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 ushbu post foydali bo‘lsa, ulashing, savollaringiz bo‘lsa kommentda yozing

@alixr @flutterorg
💯2