#savol
Flutterda Platform Channellar ?
- Flutterda Platform Channellar flutter ilovalari va native (Android va iOS) o'rtasida aloqa o'rnatish uchun ishlatiladi. Bu bilan Dart qismidan Androidning Kotlin/Java, iOS'ning esa Swift/Objectiv-C qismiga so'rov jo'natish va javob olish mumkin.
Platform Channellar 3 ga bo'linadi:
1. Method Channel - Bir marttalik so'rov berish va javob qabul qilish uchun ishlatiladi. Flutter native qismga so'rov jo'natadi va protses qilingan datani qaytib oladi;
2. Event Channel - native qismdan flutter codega malumotlarni doimiy ravishda uzatish uchun ishlatiladi. Bu native tomondan dart qismga bir tomonlama chanel yaratadi va dart qismga event yoki oqimni asinxron tarzda jo'natishga yordam beradi. Bu native tomondan doimiy tarzda sensor malumot, wi-fi holati yoki shunga o'xshash doimiy uzatiladigan data uchun ishlatiladi;
3. BasicMessageChannel - Dart va native kod o'rtasida ikki tomonlama asinxron messagelarni jo'natish va qabul qilish uchun ishlatiladi. Bu doimiy ravishda ikki tomonlama malumot almashish uchun ishlatiladi.
Flutterda Platform Channellar ?
- Flutterda Platform Channellar flutter ilovalari va native (Android va iOS) o'rtasida aloqa o'rnatish uchun ishlatiladi. Bu bilan Dart qismidan Androidning Kotlin/Java, iOS'ning esa Swift/Objectiv-C qismiga so'rov jo'natish va javob olish mumkin.
Platform Channellar 3 ga bo'linadi:
1. Method Channel - Bir marttalik so'rov berish va javob qabul qilish uchun ishlatiladi. Flutter native qismga so'rov jo'natadi va protses qilingan datani qaytib oladi;
2. Event Channel - native qismdan flutter codega malumotlarni doimiy ravishda uzatish uchun ishlatiladi. Bu native tomondan dart qismga bir tomonlama chanel yaratadi va dart qismga event yoki oqimni asinxron tarzda jo'natishga yordam beradi. Bu native tomondan doimiy tarzda sensor malumot, wi-fi holati yoki shunga o'xshash doimiy uzatiladigan data uchun ishlatiladi;
3. BasicMessageChannel - Dart va native kod o'rtasida ikki tomonlama asinxron messagelarni jo'natish va qabul qilish uchun ishlatiladi. Bu doimiy ravishda ikki tomonlama malumot almashish uchun ishlatiladi.
#savol
Flutter arxitekturasi qanday ?
- Flutter arxitekturasi uch qismga bo'linadi:
1. Flutter Framework;
2. Flutter Engine;
3. Embedder (Platform Specific Code);
Va bularning o'z vazifasi bor :
1. Flutter Framework (Dart)
Flutter-ning yuqori darajadagi qismi bo‘lib, u Dart tilida yozilgan. Asosan uchta qatlamdan iborat:
• Material/Cupertino → UI komponentlari (Material yoki Cupertino vidjetlari).
• Widgets → Flutter-ning UI qurish uchun ishlatiladigan asosiy qatlami. Stateless va Stateful Widget-lar shu yerda joylashgan.
• Rendering, Gestures, Animation → UI ni chizish, animatsiyalar va foydalanuvchi harakatlariga javob berish.
2. Flutter Engine (C/C++)
Bu Flutter-ning “dvigateli”. Ushbu qism:
• Impeller grafik kutubxonasi yordamida UI ni chizadi.
• Dart kodini nativeda ishlashga aylantiradi (Dart VM yoki AOT - Ahead of Time Compilation orqali).
• Animatsiyalar va shriftda ishlashni optimallashtiradi.
3. Embedder (Platform Specific Code)
Bu qism Flutter ilovasini Android yoki iOS kabi platformalarda ishlashiga moslashtiradi.
• Android → MainActivity.kt yoki MainActivity.java (Kotlin/Java).
• iOS → AppDelegate.swift yoki AppDelegate.m (Swift/Objective-C).
• Linux, macOS, Windows → Tegishli native kodlar bilan ishlaydi.
Flutter Engine va Embedder birgalikda Flutter ilovasini platformada ishga tushirishga yordam beradi.
Flutter arxitekturasi qanday ?
- Flutter arxitekturasi uch qismga bo'linadi:
1. Flutter Framework;
2. Flutter Engine;
3. Embedder (Platform Specific Code);
Va bularning o'z vazifasi bor :
1. Flutter Framework (Dart)
Flutter-ning yuqori darajadagi qismi bo‘lib, u Dart tilida yozilgan. Asosan uchta qatlamdan iborat:
• Material/Cupertino → UI komponentlari (Material yoki Cupertino vidjetlari).
• Widgets → Flutter-ning UI qurish uchun ishlatiladigan asosiy qatlami. Stateless va Stateful Widget-lar shu yerda joylashgan.
• Rendering, Gestures, Animation → UI ni chizish, animatsiyalar va foydalanuvchi harakatlariga javob berish.
2. Flutter Engine (C/C++)
Bu Flutter-ning “dvigateli”. Ushbu qism:
• Impeller grafik kutubxonasi yordamida UI ni chizadi.
• Dart kodini nativeda ishlashga aylantiradi (Dart VM yoki AOT - Ahead of Time Compilation orqali).
• Animatsiyalar va shriftda ishlashni optimallashtiradi.
3. Embedder (Platform Specific Code)
Bu qism Flutter ilovasini Android yoki iOS kabi platformalarda ishlashiga moslashtiradi.
• Android → MainActivity.kt yoki MainActivity.java (Kotlin/Java).
• iOS → AppDelegate.swift yoki AppDelegate.m (Swift/Objective-C).
• Linux, macOS, Windows → Tegishli native kodlar bilan ishlaydi.
Flutter Engine va Embedder birgalikda Flutter ilovasini platformada ishga tushirishga yordam beradi.
#savol
Ushbu dart code run qilingach nima bo'ladi ?
- Avvalambor hashCode nima ekanini ko'ramiz - Dartda har bir obektning hashCode bo'lib, u obektning identifikatsiya yoki kontentini ifodalovchi butun son hisoblanadi. U Set va Map collectionlarda lookuplar tezligni oshirish uchun ishlatiladi.
- interger'lar uchun hashCode ularning qiymatiga teng;
- string'lar uchun esa Dart hashing funksyalarni ishlatadi;
demak quyidagicha javob olish mumkin:
Ushbu dart code run qilingach nima bo'ladi ?
- Avvalambor hashCode nima ekanini ko'ramiz - Dartda har bir obektning hashCode bo'lib, u obektning identifikatsiya yoki kontentini ifodalovchi butun son hisoblanadi. U Set va Map collectionlarda lookuplar tezligni oshirish uchun ishlatiladi.
- interger'lar uchun hashCode ularning qiymatiga teng;
- string'lar uchun esa Dart hashing funksyalarni ishlatadi;
demak quyidagicha javob olish mumkin:
12345
12345
12345
123456712345 // "12345" string uchun chiqishi mumkin bo'lgan hashCode;
123456712345
123456712345
#savol
Flutterda KEY lar qaysilar va nima vazifani bajaradi ?
Flutterda KEY — bu widgetlarni identifikatsiya qilish va ularning holatini boshqarish uchun ishlatiladigan maxsus obyekt.
Key asosan:
1. Widgetlarni identifikatsiya qilish – Agar bir xil turdagi bir nechta widget bo‘lsa, Flutter ularni Key yordamida ajratib oladi.
2. Holatni saqlash (State Preservation) – StatefulWidget lar qayta qurilganida, ularning oldingi holatini yo‘qotmasligi uchun Key ishlatiladi.
3. Animatsiyalar va o‘tishlar (Transitions) – Key yordamida widgetlar orasida silliq animatsiyalar amalga oshiriladi.
4. ListView, GridView va boshqa ro‘yxatlar bilan ishlash – Key ro‘yxat elementlarini aniq aniqlash va optimallashtirish uchun ishlatiladi.
Key'ning turlari:
1️⃣ ValueKey - bu kalit qiymat asosida yaratiladi. Agar qiymat o‘zgarmasa, Flutter widgetni qayta yaratmaydi.
2️⃣ ObjectKey - bu kalit obyektlar orqali ishlaydi. Obyektning hashCode yoki == operatori orqali solishtiriladi.
3️⃣ UniqueKey -bu har safar yangi kalit yaratadi va widgetni har doim yangilashga majbur qiladi.
☝️ Eslatma: UniqueKey bir xil widgetlar uchun har safar yangi identifikator yaratib, ularning qayta ishlatilishiga yo‘l qo‘ymaydi.
4️⃣ GlobalKey - bu StatefulWidget lar uchun eng kuchli Key bo‘lib, u nafaqat widgetni identifikatsiya qiladi, balki uning State obyektiga ham murojaat qilish imkonini beradi.
📌 Key larni noto‘g‘ri ishlatish ortiqcha resurs sarfiga olib kelishi mumkin. Eng yaxshi usul – faqat kerakli joylarda ishlatish.
Flutterda KEY lar qaysilar va nima vazifani bajaradi ?
Flutterda KEY — bu widgetlarni identifikatsiya qilish va ularning holatini boshqarish uchun ishlatiladigan maxsus obyekt.
Key asosan:
1. Widgetlarni identifikatsiya qilish – Agar bir xil turdagi bir nechta widget bo‘lsa, Flutter ularni Key yordamida ajratib oladi.
2. Holatni saqlash (State Preservation) – StatefulWidget lar qayta qurilganida, ularning oldingi holatini yo‘qotmasligi uchun Key ishlatiladi.
3. Animatsiyalar va o‘tishlar (Transitions) – Key yordamida widgetlar orasida silliq animatsiyalar amalga oshiriladi.
4. ListView, GridView va boshqa ro‘yxatlar bilan ishlash – Key ro‘yxat elementlarini aniq aniqlash va optimallashtirish uchun ishlatiladi.
Key'ning turlari:
1️⃣ ValueKey - bu kalit qiymat asosida yaratiladi. Agar qiymat o‘zgarmasa, Flutter widgetni qayta yaratmaydi.
Widget myWidget = Container(key: ValueKey('my_key'), child: Text("Salom"));
2️⃣ ObjectKey - bu kalit obyektlar orqali ishlaydi. Obyektning hashCode yoki == operatori orqali solishtiriladi.
class User {
final String name;
User(this.name);
}
User user = User('Isroiljon');
Widget myWidget = Container(key: ObjectKey(user), child: Text(user.name));
3️⃣ UniqueKey -bu har safar yangi kalit yaratadi va widgetni har doim yangilashga majbur qiladi.
Widget myWidget = Container(key: UniqueKey(), child: Text("Salom"));
☝️ Eslatma: UniqueKey bir xil widgetlar uchun har safar yangi identifikator yaratib, ularning qayta ishlatilishiga yo‘l qo‘ymaydi.
4️⃣ GlobalKey - bu StatefulWidget lar uchun eng kuchli Key bo‘lib, u nafaqat widgetni identifikatsiya qiladi, balki uning State obyektiga ham murojaat qilish imkonini beradi.
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
Form(
key: formKey,
child: TextFormField(
validator: (value) => value!.isEmpty ? "Majburiy maydon" : null,
),
);
📌 Key larni noto‘g‘ri ishlatish ortiqcha resurs sarfiga olib kelishi mumkin. Eng yaxshi usul – faqat kerakli joylarda ishlatish.
Media is too big
VIEW IN TELEGRAM
Day11 - Ozgina tanaffusdan keyin qayta faolyatdaman. Bu yerga joylash esimdan chiqibdi 😁
👍4
Media is too big
VIEW IN TELEGRAM
Day12 Omad mehnatni yaxshi ko’radi.
Bu ham esimdan chiqib qolgan edi 😁
Bu ham esimdan chiqib qolgan edi 😁
👍5
Media is too big
VIEW IN TELEGRAM
Day13 Anchandan buyon rejalab yurganim amalga oshdi. Xudo hohlasa yangiliklar hali davom etadi 😁😉.
❤2
Yaponlar rostdan ham aqillida.
Yaponyada anchadan yillardan beri bo’lmagan qor yog’moqda va ular bundan ham foyda olish yo’lini o’ylab topishibdi. Endi sayyohlarga qo’r ko’p yog’ayotkan joylarga borib qorni o’z qo’llari bilan tozalash yoki qorkurar mashina minib tozalash imkonini bermoqda va qor ko’rmagan sayyohlar yog’ilib bormoqda ekan.
P.s/ Ham sayyohlikdan foyda, ham tekinga qor tozalash mazzami?
Yaponyada anchadan yillardan beri bo’lmagan qor yog’moqda va ular bundan ham foyda olish yo’lini o’ylab topishibdi. Endi sayyohlarga qo’r ko’p yog’ayotkan joylarga borib qorni o’z qo’llari bilan tozalash yoki qorkurar mashina minib tozalash imkonini bermoqda va qor ko’rmagan sayyohlar yog’ilib bormoqda ekan.
P.s/ Ham sayyohlikdan foyda, ham tekinga qor tozalash mazzami?
❤4
Media is too big
VIEW IN TELEGRAM
Day13 Sevgan ishingiz bilan shug’ullaning.
#savol
Object va dynamic turlarning farqi nima ?
🔽 Object - Dart tilida barcha obyektlar ushbu klasdan meros oladi.
- barcha turlar (int, string, bool, List, Map va barchasi) Object klasidan kelib chiqadi;
- object klasida e'lon qilingan barcha o'zgaruvchilar Object'ning umumiy metodlari bilan ishlay oladi;
- object o'zgaruvchilar compile timeda tekshiriladi va xatoliklarni aniqlaydi;
- agar o'zgaruvchining tur metodlari bilan ishlamoqchi bo'lsangiz cast qilishingizga to'g'ri keldi;
- to'g'ridan to'g'ri null qiymat olmaydi buning uchun nullable qilishingiz kerak ya'ni Object?;
🔽 dynamic - barcha turdagi qiymatlarni qabul qilishi mumkin;
- tekshiruvlar runtime'da amalga oshiriladi;
- runtime check bo'lgani uchun ishlatish havfsiz emas ya'ni runtime error chiqish ehtimoli katta;
- o'zgaruvchining metodlariga kirish mumkin lekin noto'g'ri bo'lsa ya'na runtime error olasiz 😅;
✅ Runtime error lardan bilan yuzlashishni hohlamasangiz Object dan foydalangan maqulroq.
Object va dynamic turlarning farqi nima ?
🔽 Object - Dart tilida barcha obyektlar ushbu klasdan meros oladi.
- barcha turlar (int, string, bool, List, Map va barchasi) Object klasidan kelib chiqadi;
- object klasida e'lon qilingan barcha o'zgaruvchilar Object'ning umumiy metodlari bilan ishlay oladi;
- object o'zgaruvchilar compile timeda tekshiriladi va xatoliklarni aniqlaydi;
- agar o'zgaruvchining tur metodlari bilan ishlamoqchi bo'lsangiz cast qilishingizga to'g'ri keldi;
- to'g'ridan to'g'ri null qiymat olmaydi buning uchun nullable qilishingiz kerak ya'ni Object?;
🔽 dynamic - barcha turdagi qiymatlarni qabul qilishi mumkin;
- tekshiruvlar runtime'da amalga oshiriladi;
- runtime check bo'lgani uchun ishlatish havfsiz emas ya'ni runtime error chiqish ehtimoli katta;
- o'zgaruvchining metodlariga kirish mumkin lekin noto'g'ri bo'lsa ya'na runtime error olasiz 😅;
✅ Runtime error lardan bilan yuzlashishni hohlamasangiz Object dan foydalangan maqulroq.
Real Dart&Flutter interview ko'ramizmi ?
Final Results
79%
Ko'ramiz 🤝
4%
Qiziqmas 🫤
17%
O'zi nima bo'lyapti 😄
This media is not supported in your browser
VIEW IN TELEGRAM
Lekin tashqarida mazza qor yog'yaptiya ? ❄️.
😍2