Learning Flutter 📱💻
5 subscribers
117 photos
35 videos
3 files
67 links
Download Telegram
Flutter dasturchisi sifatida Google yoki boshqa yirik kompaniyaga ishga kirish uchun intervyu jarayonida beriladigan savollar turli xil bo‘lishi mumkin. Quyida junior Flutter dasturchisi uchun tayyorlanish kerak bo‘lgan savollarni kategoriyalar bo‘yicha taqdim etaman:


---

1. Dasturlash asoslari:

OOP (Object-Oriented Programming) asoslari:

Class, object, inheritance, polymorphism, encapsulation haqida tushuntirib bering.

Abstract class va Interface o‘rtasidagi farq nima?


Data structures:

Array, List, Set, Map haqida bilasizmi?

Stack va Queue haqida tushuntiring.


Algorithms:

Binary search qanday ishlaydi?

Sorting algoritmlarini tushuntirib bering (Bubble sort, Quick sort).




---

2. Dart dasturlash tili:

Future va Stream nima va ular qanday ishlatiladi?

Dart’da Null Safety qanday ishlaydi?

final, const, va var o‘rtasidagi farq nima?

async/await bilan ishlash prinsiplari.

fromJson va toJson funksiyalarini yozib bering.



---

3. Flutter asoslari:

Flutter’ning asosiy widgetlari haqida gapirib bering:

StatelessWidget va StatefulWidget o‘rtasidagi farq nima?

Column, Row, ListView, GridView qanday ishlaydi?


Flutter’da Navigator qanday ishlatiladi?

State management haqida bilasizmi? (e.g., Provider, Riverpod, BLoC, Redux)

Animatsiya bilan ishlash bo‘yicha savollar:

AnimatedContainer, Hero, va CustomPainter haqida gapiring.




---

4. Mahalliy va tashqi ma'lumotlar bilan ishlash:

API bilan ishlash:

HTTP so‘rovlarini qanday amalga oshirasiz (http yoki Dio package)?

JSON parsing qanday qilinadi?


Local Storage:

SharedPreferences va Hive o‘rtasidagi farq nima?

Mahalliy ma’lumotlarni saqlash uchun qanday texnologiyalardan foydalanasiz?




---

5. UI/UX va dizayn prinsiplari:

Responsive dizaynni qanday amalga oshirasiz?

Material Design va Cupertino Design o‘rtasidagi farq nima?

Custom Widgets qanday yaratasiz?

Adaptive layoutlarni yaratish bo‘yicha savollar.



---

6. Debugging va testing:

Debug jarayonida qanday vositalardan foydalanasiz (Flutter DevTools, Dart Analyzer)?

Unit test, Widget test va Integration test nima va qachon ishlatiladi?



---

7. Yaxshi amaliyotlar va umumiy savollar:

Kodni optimallashtirish uchun qanday strategiyalardan foydalanasiz?

Modular kodlash bo‘yicha nima bilasiz?

Flutter’da ishlash paytida qanday muammolarga duch kelganingiz va ularni qanday hal qilganingiz haqida gapiring.



---

Qo‘shimcha maslahatlar:

1. Portfolio: Tayyorlagan ilovangiz yoki loyihalaringizni portfolioningizga qo‘shing.


2. Github: Kodlaringizni Github’da joylashtiring.


3. Mock interviews: Intervyu mashqlarini bajarib ko‘ring.



Agar ushbu savollarning biror qismi bo‘yicha qo‘shimcha tushuncha yoki yordam kerak bo‘lsa, menga xabar bering!
1. typedef nima?

typedef — bu funksiya turlarini aniqlash uchun ishlatiladi. U funksiyaning imzosini (parametrlari va qaytaradigan qiymatini) belgilash imkonini beradi. Bu orqali kodni qayta-qayta yozishdan qochasiz va bir xil turdagi funksiyalarni boshqarish osonlashadi.

2. Foydalanish sabablari:

Kodingizni tushunarliroq qilish.

Murakkab funksiya turlarini boshqarish.

Bir xil turdagi funksiyalarni boshqarishni soddalashtirish.



---

3. Oddiy misol:

typedef MyFunction = int Function(int a, int b);

int add(int a, int b) => a + b;
int subtract(int a, int b) => a - b;

void main() {
MyFunction operation;

operation = add;
print('Add: ${operation(5, 3)}'); // Natija: Add: 8

operation = subtract;
print('Subtract: ${operation(5, 3)}'); // Natija: Subtract: 2
}

Bu yerda:

typedef MyFunction = int Function(int a, int b); — bu imzo bo‘lib, u ikki int parametrni oladigan va int qiymat qaytaradigan funksiyalarni belgilaydi.

operation o‘zgaruvchisi orqali turli xil funksiyalarni chaqira olamiz.



---

4. Flutter va typedef:

Flutterda ko‘pincha typedef callback funksiyalar bilan ishlatiladi. Masalan:

typedef OnPressedCallback = void Function();

class MyButton {
final OnPressedCallback onPressed;

MyButton({required this.onPressed});

void press() {
onPressed();
}
}

void main() {
final button = MyButton(onPressed: () {
print('Button pressed!');
});

button.press(); // Natija: Button pressed!
}

Bu yerda:

OnPressedCallback turidagi funksiya MyButton sinfida qo‘llanilgan.

onPressed funksiyasi chaqirilganida, kerakli kod ishga tushadi.



---

5. Generic bilan typedef:

Dart tilida typedef generic turlar bilan ham ishlaydi.

typedef Transformer<T> = T Function(T value);

String toUpperCase(String value) => value.toUpperCase();
int doubleValue(int value) => value * 2;

void main() {
Transformer<String> stringTransformer = toUpperCase;
Transformer<int> intTransformer = doubleValue;

print(stringTransformer('dart')); // Natija: DART
print(intTransformer(10)); // Natija: 20
}


---

6. typedef va anonym funksiyalar:

Ko‘pincha typedef anonym funksiyalar bilan ishlatiladi:

typedef MathOperation = int Function(int x, int y);

void main() {
final MathOperation multiply = (x, y) => x * y;
print(multiply(4, 5)); // Natija: 20
}


---

Agar sizda typedef bo‘yicha qo‘shimcha savollar bo‘lsa, bemalol so‘rang!
Dart tilida konsolga yozuvlarni rangli qilib chiqarish uchun ANSI escape codes yordamida ishlatiladigan rang kodlari ro'yxatini taqdim etaman. Bu kodlar asosan terminalda ishlaydi va ranglarni faollashtirish uchun moslashgan bo'lishi kerak.

Rang kodlari
Quyidagi ro'yxat ranglarning ANSI escape kodlarini o'z ichiga oladi:

Rang nomi Kod
Qizil (Red) \x1B[31m
Yashil (Green) \x1B[32m
Sariq (Yellow) \x1B[33m
Ko'k (Blue) \x1B[34m
Binafsha (Purple) \x1B[35m
Moviy (Cyan) \x1B[36m
Oq (White) \x1B[37m
Qora (Black) \x1B[30m
Standart (Reset) \x1B[0m
Masalaning yechimi
Quyida Dartda rangli matnni terminalga chiqarish uchun misol keltirilgan:

dart
Kodni nusxalash
void main() {
// Rang kodlari
const String reset = '\x1B[0m'; // Reset
const String red = '\x1B[31m'; // Qizil
const String green = '\x1B[32m'; // Yashil
const String yellow = '\x1B[33m'; // Sariq
const String blue = '\x1B[34m'; // Ko'k
const String purple = '\x1B[35m'; // Binafsha
const String cyan = '\x1B[36m'; // Moviy
const String white = '\x1B[37m'; // Oq

// Rangli matnlarni chiqarish
print('${red}Bu qizil matn$reset');
print('${green}Bu yashil matn$reset');
print('${yellow}Bu sariq matn$reset');
print('${blue}Bu ko\'k matn$reset');
print('${purple}Bu binafsha matn$reset');
print('${cyan}Bu moviy matn$reset');
print('${white}Bu oq matn$reset');
}
Muhim eslatma
ANSI rang kodlari barcha terminallarda ishlamasligi mumkin. Masalan, ba'zi Windows terminallari qo'shimcha sozlashni talab qiladi.
Ranglarni ishlatishdan oldin terminalingizda ANSI kodlari qo'llab-quvvatlanishini tekshiring.
Agar qo'shimcha savollaringiz bo'lsa, bemalol so'rang! 😊
Foydali snippetlar
Qanday laptop olsam ekan dep yurganlarga Flutter dasturlash uchun yuqori samarali va uzoq batareya muddati bilan ta'minlangan noutbuk izlayotgan ekansiz. Quyidagi modellardan birini ko‘rib chiqishingizni tavsiya etaman:
Tanlovingizda quyidagi omillarni hisobga oling:
Protsessor: Eng yangi Intel Core i7 yoki i9, yoki Apple M2 Pro/Max chiplariga ega modellarga e'tibor bering.
Operativ xotira (RAM): Kamida 16 GB, yaxshisi 32 GB bo'lgan modellarga ustunlik bering.
Saqlash joyi: Tezkor NVMe SSD bilan kamida 512 GB yoki undan ko'proq hajmni tanlang.
Displey: Yuqori aniqlikdagi (Full HD yoki undan yuqori) ekran ko'zlarni kamroq charchatadi va dasturlashda qulaylik yaratadi.
Batareya muddati: Ishlash uslubingizga mos ravishda uzoq batareya muddatiga ega modellarga e'tibor bering.
Shuningdek, Tashkent shahridagi mahalliy elektronika do'konlarida ushbu modellarning mavjudligini va narxlarini tekshirishni tavsiya etaman.
Flutter da ekranni aniqlsh
MediaQuery.of(context).size orqali ekranning kengligini va bo‘yini tekshirib, Chrome va Android uchun mos sharoit yaratish mumkin.

Muammo sabablari:

1. Chrome-da web ishlash sharoiti boshqacha: Masalan, ba’zi UI elementlari webda farqli ishlashi mumkin.


2. Ekran o‘lchami noto‘g‘ri aniqlanayotgani: Chrome va Android ekran o‘lchamlari farqli bo‘lishi mumkin, shuning uchun moslashuv kerak.


3. Platformaga qarab harakat qilish kerak: Web va Android uchun alohida kod ishlatish mumkin.




---

Yechim:

1. kIsWeb bilan tekshirish
Flutter’da kIsWeb orqali web yoki Android ekanligini bilib olish mumkin.
import 'package:flutter/material.dart';
import 'dart:io' show Platform; // Platform tekshirish uchun
import 'package:flutter/foundation.dart' show kIsWeb;

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('MediaQuery Test')),
body: Center(
child: LayoutBuilder(
builder: (context, constraints) {
double width = MediaQuery.of(context).size.width;

String platform = kIsWeb
? 'Web'
: Platform.isAndroid
? 'Android'
: 'Boshqa Platforma';

return Container(
width: width * 0.5, // Ekranning 50% ini egallaydi
height: 100,
color: Colors.blue,
child: Center(
child: Text('Platforma: $platform\nWidth: $width'),
),
);
},
),
),
),
);
}
}

---

Tushuntirish:

1. kIsWeb → Agar web bo‘lsa, "Web" deb qaytaradi.


2. Platform.isAndroid → Android ekanligini tekshiradi.


3. MediaQuery.of(context).size.width orqali ekranning kengligi olinadi.


4. LayoutBuilder → Ba’zan MediaQuery noto‘g‘ri ishlashi mumkin, shunda LayoutBuilder yaxshi yordam beradi.




---

Xulosa

Agar Chrome-da xatolik berayotgan bo‘lsa, birinchi navbatda kIsWeb yordamida web muhit ekanligini tekshirib, mos kod yozish kerak. Shuningdek, MediaQuery yoki LayoutBuilder orqali o‘lchamlarni tekshirish ham muammoni hal qilishga yordam beradi.
textField orab turuvchi Form widgeti bu Bir nechta shakl maydoni vidjetlarini (masalan, TextField vidjetlari) guruhlash uchun ixtiyoriy konteyner .

Har bir alohida shakl maydoni FormField vidjetiga o'ralgan bo'lishi kerak , Form vidjeti ularning barchasining umumiy ajdodi sifatida. Ushbu shaklning avlodi bo'lgan har bir FormFieldni saqlash, qayta o'rnatish yoki tasdiqlash uchun FormState- da qo'ng'iroq usullari . FormState ni olish uchun siz Form.of dan ajdodi Shakl bo'lgan kontekst bilan foydalanishingiz yoki GlobalKey ni Form konstruktoriga o'tkazib , GlobalKey.currentState ga qo'ng'iroq qilishingiz mumkin .
TextFromField bu TextFieldni orab turuvchi widget va uni boshqarishda kerak boladi
focusNode classi klaviatura focusini olish va uni boshqarishda kerak boladi
#hosting #netlify #webhost #heroku

Qanday qilib yaratgan saytingizni internetga bepul joylash mumkin?

🔗 netlify.com
🔗 000webhost.com
🔗 heroku.com

Mana shu saytlar orqali siz saytingizni bepul internetga qo'ysangiz bo'ladi 😉


💻 @dasturlash_hayoti — bir xatoni tuzatib, ikkinchisiga tayyorlanish! 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
Hoziroq boshlang hatto:
Tajribasiz bo‘lsangiz ham.
Ishonchingiz kam bo‘lsa ham.
Resurslar yetarli bo‘lmasa ham.
Tushkunlikka tushsangiz ham.
Qo‘llab quvvatlanmasangiz ham.
Uorren Baffet