fast_module 1.3.1
fast_module: ^1.3.1 copied to clipboard
flutter 组件化容器
example/lib/main.dart
import 'package:example/app/moduleA/detail/bindings/detail_binding.dart';
import 'package:example/app/moduleA/detail/views/detail_view.dart';
import 'package:example/main_moudle.dart';
import 'package:fast_module/fast.dart';
import 'package:fast_module/fast_module_protocol.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
// MainMoudle ModuleA ModuleB ModuleC 都一样, 都可以执行sdk初始化, 路由配置 等等
// init 顺序自上而下
Fast.registerBuilder((manager) {
manager.register(MainMoudle());
manager.register(ModuleA());
manager.register(ModuleB());
manager.register(ModuleC());
});
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
// Fast.pages = MainMoudle + ModuleA + ModuleB + ModuleC + ...
// 主项目如果也有路由,
return GetMaterialApp(
title: 'Flutter Demo',
getPages: Fast.pages,
home: Text('省略...'),
);
// return GetMaterialApp(
// title: 'Flutter Demo',
// onGenerateRoute: Fast.onGenerateRoute,
// home: Text('省略...'),
// );
}
}
/*
主项目: 依赖的子模块
主项目: pubspec.yaml 文件结构
dependencies:
flutter:
sdk: flutter
ModuleA:
path: ../ModuleA
ModuleB: ^1.0.0
ModuleC:
git:
url: 'git.com'
ref: 1.0.0
模块A, 目录结构:
lib
src
业务代码
ykq_ble_modules.dart
main.dart
*/
// ModuleA 实现, 此处detail 是借用主工程
class ModuleA extends FastModuleProtocol {
// 提供子模块路由
// @override
// GetPageRoute? onGenerateRoute(RouteSettings settings) {
// switch (settings.name) {
// case: 'module/A'
// return GetPageRoute(settings:settings,page:()=>A(),bindings:ABingdings());
// default:
// return null;
// }
// }
// 此处detai是借用
final getPages = [
GetPage(name: '/detail', page: () => DetailView(), binding: DetailBinding()),
// GetPage(name: '/order', page: order(), binding: orderBindings()),
// GetPage(name: '/address', page: address(), binding: addressBindings()),
];
// 接收其他模块发送的消息
@override
onReceivedMessage(String eventName, arguments) {
return super.onReceivedMessage(eventName, arguments);
}
// 子模块的初始化任务
@override
void init() {
// 埋点.init();
// SP.init();
// ...
}
}
// 跟A 一样
class ModuleB extends FastModuleProtocol {}
// 跟A 一样
class ModuleC extends FastModuleProtocol {}