tentang arsitektur Redux di aplikasi Flutter

Baru-baru ini ada artikel tentang arsitektur bersih di Flutter. Saya ingin membahas topik dari sudut yang sedikit berbeda dan mengembangkan topik mengelola negara global dengan Redux.

Dan sedikit tentang diri saya: Saya telah menciptakan produk komersial selama sekitar 10 tahun, di mana saya telah bekerja di Flutter selama hampir 2 tahun, dan saya berhasil mencoba semua manajer negara terkenal. Beberapa membangkitkan ingatan netral - BLoC, Penyedia, kelas blok global dengan aliran mereka, dan beberapa yang negatif - MobX.

Akibatnya, untuk diri saya sendiri, saya memilih Redux untuk status global dan perpustakaan untuk mengimplementasikan struktur aplikasi:

  • built_value

  • built_collection

  • rxdart (opsional)

  • flutter_simple_dependency_injection (atau dioc)

  • built _ redux

Ini adalah set perpustakaan minimal saya untuk mengimplementasikan proyek di tingkat mana pun.

Sekarang selangkah demi selangkah

Struktur umum aplikasi

Struktur umum aplikasi
Angka:  1. Struktur umum aplikasi
Angka: 1. Struktur umum aplikasi

  Folder di root semuanya standar, dibuat secara otomatis, tetapi ada yang tambahan:

  • build.yaml - built_value,

  • analysis_options.yaml - . .

  • scripts - /// : , , , Flutter, . -. : prepare_app - Flutter, prepare_app_hover - hover. , ( ) dartfix -

  • application_bundle - . , JSON - - "" , , ..

-
Angka:  2. Contoh pengocokan awal
. 2. -

Angka:  3. Contoh dari satu set skrip
. 3.

Flutter-

lib :

  • domain - : , , , , , ,

  • tools -

  • di - ,

  • features - UI , ,

  • services - , , ,

  • app - . MaterialApp CupertinoApp

  • app_routes.dart -

Domain

-
Angka:  4. Contoh implementasi model kelas
. 4. -

  • actions

    built_redux Redux-

-
Angka:  5. Contoh implementasi kelas model tindakan
. 5. -

  • middlewares

, built_redux

-
Angka:  6. Contoh implementasi kelas middleware
. 6. -

  • epics

    . built_redux. rxdart

-
Angka:  7. Contoh implementasi kelas epik
. 7. -

  • reducers

,

-
Angka:  8. Contoh implementasi kelas peredam
. 8. -

  • states

    Redux. - - AppState, : , .. built_redux

-
Angka:  9. Contoh implementasi negara-kelas
. 9. -

DI

. flutter_simple_dependency_injection

Angka:  10. Contoh implementasi inversi dependensi
. 10.

Features

- , . - blocs, components, widgets, tools. - widgets . (BLoC) - , . - - . StatefulWidget’

  • initState

  • - StreamBuilder’

  • dispose

components - -,

BLoC

- -. , di-. ,   -

BLoC
Angka:  11. Contoh kelas BLoC abstrak dasar
. 11. BLoC

- BaseBloc .

BLoC-
Angka:  12. Contoh kelas BLoC
. 12. BLoC-

  :

  1. ,

  2. . / , , . , - (, , , ..), ( , , , nextSubstate)

-

Angka:  13. Contoh metode untuk memanggil tindakan
. 13.

StreamBuilder:

Angka:  14. Perubahan status rendering
. 14.

, , , .

:

  1. . , . 300 2

  2. Redux , ,

:

  1. , , built_value “ ”

  2. Redux

  3. /

  4. . , 13 Flutter ,

  5. , UI - , ( Redux , )

Dan saya ingin menambahkan bahwa tidak ada proyek sederhana. Terkadang proyek hewan peliharaan tumbuh menjadi produk komersial. Dan kemudian, setelah arsitektur yang dirancang dengan tidak tepat, operasi normal mungkin menjadi tidak mungkin. Saya memiliki proyek, juga di Flutter, yang, demi kepentingan, saya coba tulis melalui arsitektur MobX. Proyek telah berkembang. Menjadi, secara halus, tidak nyaman untuk bekerja, saya harus menulis ulang semuanya di Redux.  

Tujuan artikel ini adalah untuk menarik perhatian pengembang pemula atau berpengalaman ke arsitektur Redux yang telah berkinerja baik pada produk komersial yang sangat besar dengan puluhan ribu pengguna harian. Dia bertahan dan bertahan dengan kedatangan / keberangkatan rekan kerja, pengenalan / penghapusan berbagai fitur.




All Articles