整体开发框架选型
# 整体开发框架选型
# flutter boost+GetX
flutter boost用来包装和原生对接的部分
getx提供flutter部分的通用能力:
- 路由
- 状态管理
- 国际化管理,主题管理
- 依赖注入/查找
- 工具类
两者混用会有问题:
https://github.com/alibaba/flutter_boost/issues?q=getx
初始化
void main() {
PageVisibilityBinding.instance
.addGlobalObserver(AppGlobalPageVisibilityObserver());
CustomFlutterBinding();
runApp(MyBoostApp());//最外层用boost,boost内通过appBuilder再嫁接到GetX
}
class CustomFlutterBinding extends WidgetsFlutterBinding
with BoostFlutterBinding {}
class MyBoostApp extends StatefulWidget {
State<MyBoostApp> createState() => _MyBoostAppState();
}
//Flutter内部使用get路由,原生和flutter路由用boost
class _MyBoostAppState extends State<MyBoostApp> {
void initState() {
super.initState();
}
Widget build(BuildContext context) {
return FlutterBoostApp(BoostRouterConfig.routeFactory,
interceptors: [
CustomInterceptor1(),
CustomInterceptor2(),
CustomInterceptor3()
],
appBuilder: appBuilder,
// initialRoute: "splash",
);
}
Widget appBuilder(Widget home2){
return GetMaterialApp(home: Home(),
unknownRoute: RouterConfig.unknownPage(),
initialRoute: '/',
getPages: RouterConfig.routers(),
navigatorObservers: [
GetObserver(RouterMiddleWare.observer), // HERE !!!
],
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
对应的widget层次:
# 路由
Flutter内部使用get路由,
原生和flutter路由用boost,
原生内部用Arouter.
整体的跳转按web url的格式来处理
以参数内"isNativeRouter=1"或isFlutterRouter=1来标识是原生还是flutter.
原生和flutter路由层拦截器处理此参数.
# 路由模块化:
参考 Flutter 路由模块化 - flutter_mixin_router (opens new window)的做法.
# 工程模块化
# 单工程 多module
有java/Android那种同一个工程内分多个module的功能,但入口比较隐蔽:
根目录下点击右键:
选择package类型或者module类型
两者区别:
module带Android/ios文件夹,可独立运行- 可用于建立组件demo
package则是单纯的库
然后手动添加flutter sdk依赖
最后,将模块添加到yaml里:
dependencies:
xxx_base:
path: xxx_base
1
2
3
2
3
# 多工程
# 参考
https://www.jianshu.com/p/717661cbb708
编辑 (opens new window)
上次更新: 2022/09/01, 17:18:38