flutter_idiomatic - starter-kit dari proyek yang sukses

Halo! Nama saya Andrew. Lebih dikenal sebagai #coderotboga (ini adalah ironi diri sendiri, jika itu). Saya menguasai Flutter dalam mode kode langsung, sudah 567 siaran . Tanpa pemotongan - "dari nol menjadi pahlawan", dimulai dengan tutorial Dart hingga proyek "sumber terbuka" lengkap dalam produksi. Selain itu, saya akan segera menyelesaikan kursus online 100 jam saya sendiri - guru sedang belajar dari siswanya. Berkat latihan intensif dan pengalaman kaya sebelumnya dengan ReactJS, saya telah membentuk serangkaian perjanjian yang ingin saya sampaikan untuk menerima umpan balik: "Panggilan Anda sangat penting bagi kami, tetap online."





Batasan dasar



, , . : dartz – Haskell, kt_dart – Kotlin. Dart. – . KISS.



-. , : ndroid – MVP, ReactJS – Redux/MobX.



«». . , . , . – Β«unix-wayΒ». - , , .



, : . 1) . , : , , .. 2) ( , ). 3) lint – , pedantic. -.





--, . , , . - . , , . ( – , ). – . JavaScript, lerna Dart – melos. , – - , .



. , . VSCode, "workbench.editor.labelFormat": "short". . : todos_screen.dart – screens/todos.dart, todos_cubits.dart – cubits/todos.dart. . , , . ( ), . TodosBody .



, Β«protectedΒ», .. ()? – , . , . – . .



widgets , ( ) , : screens/todos.dart – TodosScreen, cubits/todos.dart – TodosCubit.



, . , lib:



common – ,

cubits – - BLoC

import.dart –

main.dart –

models –

repositories – ( )

screens –

widgets –





Firebase Authentication, . - -, BDD (Behavior Driven Development).





Sebagai contoh, CRUD diimplementasikan di BLoC & GraphQL. Jika Anda ragu tentang pola arsitektur mana yang akan digunakan untuk manajemen negara, pelajari kode sumber proyek tersebut. BLoC diperkenalkan oleh Google pada tahun 2018, tetapi sangat sulit untuk melakukannya dengan sederhana. Felix Angelov bisa , saya jatuh cinta dengan hasta dan belajar cara memasaknya.



Dan terakhir, lapisan gula pada kue - navigasi tanpa konteks dengan argumen yang diketik:



class ZoomScreen extends StatelessWidget {
  Route<T> getRoute<T>({bool isInitialRoute}) {
    return buildRoute<T>(
      '/zoom?unit_id=${unit.id}', //  
      builder: (_) => this,
      fullscreenDialog: true,
      isInitialRoute: isInitialRoute,
    );
  }

  ZoomScreen(this.unit);

  final UnitModel unit;
...


navigator.push<void>(ZoomScreen(unit).getRoute());


Kode sumber , dan terima kasih atas perhatian Anda.




All Articles