最近、Flutterのクリーンなアーキテクチャに関する記事がありました。少し違う角度からトピックをカバーし、Reduxでグローバル状態を管理するトピックを開発したいと思います。
そして私自身について少し:私は約10年間商用製品を作成しており、そのうち2年近くFlutterに在籍しており、すべての有名な州のマネージャーを試すことができました。中立的な記憶を呼び起こすものもあります-BLoC、プロバイダー、独自のストリームを持つグローバルクラスブロック、そしていくつかの否定的なもの-MobX。
その結果、私自身は、アプリケーション構造を実装するためのグローバル状態とライブラリをReduxに決定しました。
built_value
built_collection
rxdart(オプション)
flutter_simple_dependency_injection(またはdioc)
建て_ Reduxの
これは、あらゆるレベルのプロジェクトを実装するための最小限のライブラリセットです。
今ステップバイステップ
アプリケーションの一般的な構造
アプリケーションの一般的な構造
ルートのフォルダはすべて標準で、自動的に作成されますが、追加のフォルダがあります。
go - hover. . , GoLang. , , , sqlite , . IDE, , SQLiteStudio. -
hover init, -
build.yaml - built_value,
analysis_options.yaml - . .
scripts - /// : , , , Flutter, . -. : prepare_app - Flutter, prepare_app_hover - hover. , ( ) dartfix -
application_bundle - . , JSON - - "" , , ..
-
Flutter-
lib :
domain - : , , , , , ,
tools -
di - ,
features - UI , ,
services - , , ,
app - . MaterialApp CupertinoApp
app_routes.dart -
Domain
models/enums
“” , , quicktype. , JSON /, .. , built_value, :
-
actions
built_redux Redux-
-
middlewares
, built_redux
-
epics
. built_redux. rxdart
-
reducers
,
-
states
Redux. - - AppState, : , .. built_redux
-
DI
. flutter_simple_dependency_injection
Features
- , . - blocs, components, widgets, tools. - widgets . (BLoC) - , . - - . StatefulWidget’
initState
- StreamBuilder’
dispose
components - -,
BLoC
- -. , di-. , -
BLoC
- BaseBloc .
BLoC-
:
,
. / , , . , - (, , , ..), ( , , , nextSubstate)
-
StreamBuilder:
, , , .
:
. , . 300 2
Redux , ,
:
, , built_value “ ”
Redux
/
. , 13 Flutter ,
, UI - , ( Redux , )
そして、簡単なプロジェクトはないことを付け加えたいと思います。ペットプロジェクトが商品に成長することもあります。そして、誤って設計されたアーキテクチャの後、通常の操作が不可能になる可能性があります。Flutterにもプロジェクトがあります。興味を引くために、MobXアーキテクチャを介して書き込もうとしました。プロジェクトは成長しました。穏やかに言えば、作業するのが不快になり、Reduxですべてを書き直さなければなりませんでした。
この記事の目的は、初心者または経験豊富な開発者の注意を、1日数万人のユーザーがいる非常に大規模な商用製品でうまく機能しているReduxアーキテクチャに引き付けることでした。彼女は生き残り、同僚の到着/出発、さまざまな機能の導入/削除に耐えました。