Flutter Dev | Uzbekistan 🇺🇿
397 subscribers
574 photos
68 videos
25 files
401 links
Flutter bu - hozirgi kundagi eng yetuk kross platformali dasturlash vositasidir!

Bu kanal Flutterning o'zbek zabon vakillari uchun.

Blog avtori:
© Muhammad Aziz (@mamasodikoff)

🥛 Ayron olib bering: tirikchilik.uz/cosmos

- Web sayt: flutterdev.uz
Download Telegram
Media is too big
VIEW IN TELEGRAM
LiquidGlass mf Apple 🍏

@flutterdevuz
2😱2👍1👌1
Forwarded from Techie's Blog
Vanihoyat meaningful move.

Oldinlari faqat inspector ichidan boshqarilar edi manashu "zormonda". Endi deviceni o'ziga qo'shib yaxshi ish qilishibdi
Most Advanced and Useful Flutter Techniques (from r/FlutterDev)

### Advanced Flutter Techniques

- **State Management**
- Use tools like Riverpod for clean and easy async state management.
- Build async-friendly UI components that react to AsyncValue states.

- **Performance Optimization**
- Profile your app regularly.
- Follow good architectural patterns to reduce the need for later optimization.

- **Custom Animations and Transitions**
- Use the `flutter_animate` package.
- Use the Hero widget for smooth page transitions.

- **Native Platform Integration**
- Use PlatformView and MethodChannel to work with native SDKs.
- Call C/C++ libraries via Dart FFI (e.g., OpenCV for image processing).
- Try Flutter Rust Bridge and other emerging FFI tools.

- **Effective Debugging**
- Use breakpoints and verify app state during debugging.

- **CI/CD Pipelines**
- Use Melos for monorepo management, running tests, and scripting both locally and in CI.

- **Complex UI and Layouts**
- Use basic Flutter widgets like MediaQuery, LayoutBuilder, and SafeArea for responsive design.

- **Best Testing Practices**
- Write composable helper functions inspired by React Hooks to manage lifecycle and resources in tests, reducing boilerplate.

- **Working with Packages & Plugins**
- Use Melos to manage multiple packages and streamline your workflow.

- **Other Useful Practices**
- Follow SOLID design principles for maintainable code.
- Use git hooks to automate formatting and other common tasks.
- Launch emulators from the terminal or VSCode launch.json for faster startup.
- Set up centralized logging with strategy patterns for analytics and console logs.
- Create strongly-typed network libraries with mock implementations for easier testing.

### Use Cases for Native Code Integration
- Alarm screen that appears even when the app is closed or the phone is locked.
- Native APIs or libraries not yet available in Flutter (e.g., Azure Speech Recognition).
- Heavy processing tasks using C++ libraries via Dart FFI (e.g., OpenCV).

@flutterdevuz
Forwarded from Flutter Dev Talk
🔥 Yangilik:

Serverpod jamoasi tomonidan iOS26'ning Liquid Glass designiga pixel2pixel qilib ishlangan yangi packagi chiqarilibdi. Bu package oldingi liquid_glass_renderer packagega qaraganda ancha qulaydek tuyildi.
Sinab ko'ramizmi ?

https://pub.dev/packages/cupertino_native

Flutter Dev Talk | Techie's Blog
iPhone 17?

iPhone 99% marketing + 1% alyumin (toʻgʻri bo'rttirdim)

Sam Altman AGI yaqin deb turgan paytda, iOS "alarm clock" ilovasidagi karusel raqam tanlagichini "loop" qilish o'rniga, uzuuuun list bervorgan ekanda.

PM: Senmidi yangi ishga kelgan Stajor? Alarm app qilib berasan.
Dev: Bro, for/while iteratorni o'qimagandim.
PM: Listlarni o'qiganmisan? Uzun list qib qo'yor, hich kim oxirigacha scroll qimidi!

P.S: Tajriba qilishni istasangiz 10-15 sekund scroll qiling.

@flutterdevuz
👍2🆒1
🚀 Dasturchi Darajalari va Rollar: Chalkashliklarga Yakun Yasash

IT sohasida tez-tez ishlatiladigan Junior, Middle, Senior, Team Lead kabi tushunchalar ko‘p hollarda noto‘g‘ri talqin qilinadi.
Masalan, ko‘pchilik “Team Lead”ni Senior’dan keyingi daraja deb o‘ylaydi.

Aslida esa:
👉 Daraja (Level) va Rol (Role) — bu ikki xil tushuncha.

📊 Darajalar (Levels) – Malaka va Tajriba Bosqichlari

Daraja — bu mutaxassisning bilimlari, tajribasi va mas’uliyat ko‘lamini bildiradi.

Junior Developer

Middle Developer

Senior Developer

🔗 Batafsil: Junior, Middle, Senior Developer haqida

👥 Rollar (Roles) – Jamoa Ichidagi Vazifalar

Rol — bu mutaxassisning jamoa yoki loyiha ichida bajaradigan vazifasi.
Bir xil darajadagi odam turli rollarda bo‘lishi mumkin.

🔹 Member (Developer)

Kod yozish, testlash yoki boshqa texnik ishlarni bajaradi.

Darajasi: Junior | Middle | Senior bo‘lishi mumkin.

🔹 Team Lead

Jamoani boshqaradi, vazifalarni taqsimlaydi, ustuvorliklarni belgilaydi.

Texnik qarorlar qabul qiladi, ammo doim ham arxitektura darajasiga kirmaydi.

Jamoa a’zolariga mentorlik qiladi.

Darajasi: odatda Senior, ba’zan soft skillari kuchli bo‘lsa Middle ham bo‘lishi mumkin.
⚠️ Muhim: Team Lead — Senior’dan keyingi bosqich emas, bu rol.

🔹 Architect / Tech Lead

Tizim arxitekturasini ishlab chiqadi.

Texnologiyalarni tanlaydi, uzoq muddatli texnik qarorlar qabul qiladi.

Ko‘pincha bir nechta jamoaga yo‘l-yo‘riq beradi.

Darajasi: odatda Senior, lekin roli — arxitektura dizayneri.

🔗 Batafsil: Developer uchun o‘sish ketma-ketligi

🔹 Project Manager (PM)

Texnik emas, biznes va jarayon boshqaruvi bilan shug‘ullanadi.

Mijoz bilan aloqa qiladi, muddatlarni belgilaydi, risklarni boshqaradi.

Daraja (Junior/Middle/Senior) tushunchasi qo‘llanilmaydi.

🔹 SecOps / QA / Data Specialist

Har biri o‘ziga xos rolda: xavfsizlik, testlash, ma’lumotlar tahlili.

Darajalari: Junior | Middle | Senior bo‘lishi mumkin.

Eng Ko‘p Chalkashadigan Masala: Middle vs Team Lead

Ko‘pchilik noto‘g‘ri o‘ylaydi:
Junior → Middle → Senior → Team Lead

To‘g‘risi esa:

Darajalar (Levels): Junior → Middle → Senior

Rollar (Roles): Developer (member) → Team Lead → Architect

Ya’ni:

Team Lead — bu lavozim emas, rol.

Senior bo‘lish shart emas, ba’zi hollarda Middle ham Team Lead bo‘lishi mumkin.

Lekin hamma Seniorlar Team Lead emas.

🎯 Xulosa

Darajalar (Levels) — mutaxassisning bilim va tajribasi.

Rollar (Roles) — jamoa ichidagi vazifasi.

Junior, Middle, Senior — malaka bosqichlari.

Team Lead, Architect, Member, PM — rollar.

👉 Daraja va rolni adashtirish — noto‘g‘ri kadr boshqaruvi va kutishlarga olib keladi.
IT kompaniyalarda muvaffaqiyatli ishlash uchun ushbu farqlarni to‘g‘ri tushunish juda muhim.
Faollik = DON = 💵

OCHISH

@flutterdevuz
Notes:
// ================== SOLID Principles ==================

// 1. Single Responsibility Principle (SRP)
// A class should have only one reason to change.

class SaveUserManager {
void saveUser() {
print("User saved.");
}
}

class ValidateUserManager {
void validateUser() {
print("User validated.");
}
}

// ======================================================

// 2. Open-Closed Principle (OCP)
// Software entities should be open for extension but closed for modification.

abstract class SalaryManager {
int salary();

int? bonus() {
return 200; // default bonus
}
}

class Junior extends SalaryManager {
@override
int salary() => 400;
}

class Middle extends SalaryManager {
@override
int salary() => 900;
}

class Senior extends SalaryManager {
@override
int salary() => 1400;

@override
int? bonus() => 400;
}

// ======================================================

// 3. Liskov Substitution Principle (LSP)
// Subtypes must be substitutable for their base types.

abstract class Shape {
int area();
}

class Rectangle extends Shape {
int height;
int width;

Rectangle(this.height, this.width);

@override
int area() => height * width;
}

class Square extends Shape {
int side;

Square(this.side);

@override
int area() => side * side;
}

// ======================================================

// 4. Interface Segregation Principle (ISP)
// No client should be forced to depend on methods it does not use.

abstract class DrivingTransport {
void drive();
}

abstract class FlyingTransport {
void fly();
}

abstract class SwimmingTransport {
void swim();
}

class BMW implements DrivingTransport {
@override
void drive() {
print("BMW driving on road...");
}
}

class Boat implements SwimmingTransport {
@override
void swim() {
print("Boat swimming on water...");
}
}

class Airplane implements FlyingTransport {
@override
void fly() {
print("Airplane flying in the sky...");
}
}

// ======================================================

// 5. Dependency Inversion Principle (DIP)
// High-level modules should not depend on low-level modules.
// Both should depend on abstractions.

abstract class AuthService {
void signIn();
}

class SmsAuth extends AuthService {
@override
void signIn() {
print("Signed in with SMS");
}
}

class GoogleAuth extends AuthService {
@override
void signIn() {
print("Signed in with Google");
}
}

class UserAuth {
final AuthService authService;

UserAuth(this.authService);

void signIn() {
authService.signIn();
}
}

// ======================================================

void main() {
// SRP
SaveUserManager().saveUser();
ValidateUserManager().validateUser();

// OCP
SalaryManager junior = Junior();
print("Junior salary: ${junior.salary()}, bonus: ${junior.bonus()}");

SalaryManager senior = Senior();
print("Senior salary: ${senior.salary()}, bonus: ${senior.bonus()}");

// LSP
Shape rect = Rectangle(10, 20);
Shape square = Square(15);
print("Rectangle area: ${rect.area()}");
print("Square area: ${square.area()}");

// ISP
BMW().drive();
Boat().swim();
Airplane().fly();

// DIP
UserAuth userAuth1 = UserAuth(GoogleAuth());
userAuth1.signIn();

UserAuth userAuth2 = UserAuth(SmsAuth());
userAuth2.signIn();
}


More: https://dev.to/harsh8088/mastering-solid-principles-in-flutter-3hp7

@flutterdevuz
1👍1