Flutter高效模块集成插件fast_module的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter高效模块集成插件fast_module的使用

特性

  • flutter组件化容器

入门指南

  • fast_module_manager 负责注册模块、注册路由、模块之间通讯。
  • fast_module_protocol 需要模块来实现, 提供路由以及接受消息。

使用方法

1. 主函数配置

// 1. 首先注册模块
FastModuleManager.registerBuilder((manager) {
    manager.register(ModuleA());
});

// 2. 动态路由 任选一种
GetMaterialApp(onGenerateRoute: FastModuleManager.instance().onGenerateRoute(settings));

//  2. 静态路由 任选一种
GetMaterialApp(getPages: FastModuleManager.instance().pages());

2. 子模块配置

假设你的文件结构如下:

lib
  src
     业务代码
  ykq_ble_modules.dart
  main.dart 

ykq_ble_modules.dart 文件中实现以下代码:

class ModuleA extends FastModuleProtocol {

  // 提供子模块路由
  [@override](/user/override)
  GetPageRoute? onGenerateRoute(RouteSettings settings) {
    switch (settings.name) {
      case 'module/A':
         return GetPageRoute(settings: settings, page: () => A(), bindings: ABingdings());
      default:
        return null;
    }
  }

   // 接收其他模块发送的消息 
  [@override](/user/override)
  onReceivedMessage({String evnetName = '', arguments}) {
    if (evnetName == 'msg') {
      // 处理消息逻辑
    }
  }

   // 子模块的初始化任务
  [@override](/user/override)
  void init() {
   TXSDK.init();
   JPPush.init();
   // 其他初始化任务
  }
  
  // ... app生命周期监听 等等
}

3. 模块间通信

final 返回值 = FastModuleManager.instance().dispatch(模块名, 事件名, 参数);

完整示例Demo

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() {
  // 注册模块
  FastModuleManager.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](/user/override)
  Widget build(BuildContext context) {
    // 主项目路由配置
    return GetMaterialApp(
      title: 'Flutter Demo',
      getPages: FastModuleManager.instance().pages(),
      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 实现
class ModuleA extends FastModuleProtocol {
  // 提供子模块路由
  [@override](/user/override)
  GetPageRoute? onGenerateRoute(RouteSettings settings) {
    switch (settings.name) {
      case 'module/A':
         return GetPageRoute(settings: settings, page: () => A(), bindings: ABingdings());
      default:
        return null;
    }
  }

  // 接收其他模块发送的消息
  [@override](/user/override)
  onReceivedMessage(String eventName, arguments) {
    return super.onReceivedMessage(eventName, arguments);
  }

  // 子模块的初始化任务
  [@override](/user/override)
  void init() {
    // 初始化任务
    // TXSDK.init();
    // JPPush.init();
  }
}

// 跟A 一样
class ModuleB extends FastModuleProtocol {}

// 跟A 一样
class ModuleC extends FastModuleProtocol {}

更多关于Flutter高效模块集成插件fast_module的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter高效模块集成插件fast_module的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中高效集成模块插件 fast_module 的代码示例。fast_module 是一个假定的插件名称,用于演示如何在Flutter项目中集成和使用模块插件。由于 fast_module 并不是真实存在的Flutter插件(在撰写此回答时),我将以一个假设的模块插件为例,展示如何集成和使用它。

步骤 1: 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 fast_module 依赖。请注意,由于这是一个假设的插件,你需要替换为实际存在的插件名称和版本。

dependencies:
  flutter:
    sdk: flutter
  fast_module: ^1.0.0  # 假设的版本号

然后运行 flutter pub get 来获取依赖。

步骤 2: 导入插件

在你的 Dart 文件中导入 fast_module 插件。

import 'package:fast_module/fast_module.dart';

步骤 3: 使用插件功能

假设 fast_module 插件提供了一个名为 FastModule 的类,该类具有一些用于模块集成的功能,比如初始化模块、加载模块资源等。以下是一个简单的使用示例:

import 'package:flutter/material.dart';
import 'package:fast_module/fast_module.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late FastModule _fastModule;

  @override
  void initState() {
    super.initState();
    // 初始化插件
    _fastModule = FastModule();
    // 初始化模块(假设有一个初始化方法)
    _fastModule.initialize().then((value) {
      print('Module initialized: $value');
    }).catchError((error) {
      print('Failed to initialize module: $error');
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fast Module Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 假设有一个加载模块资源的方法
              _fastModule.loadModuleResource('example_resource').then((data) {
                print('Module resource loaded: $data');
                // 显示加载的数据,这里只是打印出来
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Resource loaded: $data')),
                );
              }).catchError((error) {
                print('Failed to load module resource: $error');
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Failed to load resource')),
                );
              });
            },
            child: Text('Load Module Resource'),
          ),
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在 pubspec.yaml 文件中添加 fast_module 依赖。
  2. 导入插件:在 Dart 文件中导入 fast_module
  3. 初始化插件:在 initState 方法中初始化 FastModule 实例,并调用其 initialize 方法进行初始化。
  4. 使用插件功能:在按钮点击事件中调用 loadModuleResource 方法加载模块资源,并处理成功或失败的回调。

请注意,上述代码是一个假设的示例,实际使用时你需要根据 fast_module 插件的真实API文档进行调整。如果 fast_module 是一个真实存在的插件,你应该查阅其官方文档以了解如何正确集成和使用它。

回到顶部