FlutterアプリケーションのReduxアーキテクチャについて

最近、Flutterのクリーンなアーキテクチャに関する記事がありました。少し違う角度からトピックをカバーし、Reduxでグローバル状態を管理するトピックを開発したいと思います。

そして私自身について少し:私は約10年間商用製品を作成しており、そのうち2年近くFlutterに在籍しており、すべての有名な州のマネージャーを試すことができました。中立的な記憶を呼び起こすものもあります-BLoC、プロバイダー、独自のストリームを持つグローバルクラスブロック、そしていくつかの否定的なもの-MobX。

その結果、私自身は、アプリケーション構造を実装するためのグローバル状態とライブラリをReduxに決定しました。

  • built_value

  • built_collection

  • rxdart(オプション)

  • flutter_simple_dependency_injection(またはdioc)

  • 建て_ Reduxの

これは、あらゆるレベルのプロジェクトを実装するための最小限のライブラリセットです。

今ステップバイステップ

アプリケーションの一般的な構造

アプリケーションの一般的な構造
図: 1.アプリケーションの一般的な構造
図:1.アプリケーションの一般的な構造

  ルートのフォルダはすべて標準で、自動的に作成されますが、追加のフォルダがあります。

  • build.yaml - built_value,

  • analysis_options.yaml - . .

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

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

-
図: 2.プレシャッフルの例
. 2. -

図: 3.一連のスクリプトの例
. 3.

Flutter-

lib :

  • domain - : , , , , , ,

  • tools -

  • di - ,

  • features - UI , ,

  • services - , , ,

  • app - . MaterialApp CupertinoApp

  • app_routes.dart -

Domain

-
図: 4.クラスモデルの実装例
. 4. -

  • actions

    built_redux Redux-

-
図: 5.アクションモデルクラスの実装例
. 5. -

  • middlewares

, built_redux

-
図: 6.ミドルウェアクラスの実装例
. 6. -

  • epics

    . built_redux. rxdart

-
図: 7.エピッククラスの実装例
. 7. -

  • reducers

,

-
図: 8.レデューサークラスの実装例
. 8. -

  • states

    Redux. - - AppState, : , .. built_redux

-
図: 9.クラス状態の実装例
. 9. -

DI

. flutter_simple_dependency_injection

図: 10.依存関係の反転の実装例
. 10.

Features

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

  • initState

  • - StreamBuilder’

  • dispose

components - -,

BLoC

- -. , di-. ,   -

BLoC
図: 11.基本的な抽象BLoCクラスの例
. 11. BLoC

- BaseBloc .

BLoC-
図: 12.BLoCクラスの例
. 12. BLoC-

  :

  1. ,

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

-

図: 13.アクションを呼び出すためのメソッドの例
. 13.

StreamBuilder:

図: 14.レンダリング状態の変化
. 14.

, , , .

:

  1. . , . 300 2

  2. Redux , ,

:

  1. , , built_value “ ”

  2. Redux

  3. /

  4. . , 13 Flutter ,

  5. , UI - , ( Redux , )

そして、簡単なプロジェクトはないことを付け加えたいと思います。ペットプロジェクトが商品に成長することもあります。そして、誤って設計されたアーキテクチャの後、通常の操作が不可能になる可能性があります。Flutterにもプロジェクトがあります。興味を引くために、MobXアーキテクチャを介して書き込もうとしました。プロジェクトは成長しました。穏やかに言えば、作業するのが不快になり、Reduxですべてを書き直さなければなりませんでした。  

この記事の目的は、初心者または経験豊富な開発者の注意を、1日数万人のユーザーがいる非常に大規模な商用製品でうまく機能しているReduxアーキテクチャに引き付けることでした。彼女は生き残り、同僚の到着/出発、さまざまな機能の導入/削除に耐えました。




All Articles