最近,在Flutter上有一篇关于干净架构的文章。我想从一个稍微不同的角度介绍该主题,并开发使用Redux管理全局状态的主题。
关于我自己的一点:我从事商业产品的开发已有大约10年的时间,其中我在Flutter工作了将近2年,我设法尝试了所有著名的州经理。有些会唤起中立的记忆-BLoC,Provider,带有自己的流的全局类块,以及一些消极的记忆-MobX。
结果,对于我自己,我选择了Redux来获取全局状态和用于实现应用程序结构的库:
建筑价值
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上的所有内容。
本文的目的是吸引初学者或经验丰富的开发人员注意Redux架构,该架构在具有成千上万日常用户的超大型商业产品上表现良好。她幸存下来,经受住了同事的到来/离开,各种功能的介绍/删除。