# flutter_module **Repository Path**: itzf/flutter_module ## Basic Information - **Project Name**: flutter_module - **Description**: flutter module demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flutter Module 一个用于嵌入Android和iOS原生应用的Flutter模块项目。 ## 功能特性 - **状态管理**: 使用GetX进行状态管理 - **网络请求**: 基于GetConnect的网络层,支持签名验证 - **路由管理**: GetX路由,支持页面跳转 - **国际化**: 支持多语言切换 - **原生通信**: 通过MethodChannel和EventChannel与原生应用通信 - **代码生成**: 使用json_serializable生成JSON序列化代码 - **屏幕适配**: 使用flutter_screenutil适配不同屏幕尺寸 - **加载指示器**: 使用flutter_easyloading显示加载状态 - **工具类**: 统一的日志输出和时间格式化工具 ## 项目结构 ``` lib/ ├── controller/ # 控制器 ├── entity/ # 数据模型 ├── generated/ # 生成的代码 ├── l10n/ # 国际化文件 ├── net/ # 网络层 ├── page/ # 页面 ├── router/ # 路由配置 ├── service/ # 服务层 └── utils/ # 工具类 ``` ## 集成到原生应用 ### Android 1. 在Android项目的`settings.gradle`中添加: ```gradle setBinding(new Binding([gradle: this])) evaluate(new File( settingsDir.parentFile, 'flutter_module/.android/include_flutter.groovy' )) ``` 2. 在`app/build.gradle`中添加依赖: ```gradle dependencies { implementation project(':flutter') } ``` 3. 在Activity中初始化Flutter: ```java FlutterEngine flutterEngine = new FlutterEngine(this); flutterEngine.getDartExecutor().executeDartEntrypoint( DartExecutor.DartEntrypoint.createDefault() ); FlutterEngineCache.getInstance().put("my_engine_id", flutterEngine); ``` ### iOS 1. 在Podfile中添加: ```ruby flutter_application_path = '../flutter_module' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'MyApp' do install_all_flutter_pods(flutter_application_path) end ``` 2. 在AppDelegate中初始化: ```swift import Flutter import FlutterPluginRegistrant @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var flutterEngine : FlutterEngine? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.flutterEngine = FlutterEngine(name: "my flutter engine") self.flutterEngine?.run() GeneratedPluginRegistrant.register(with: self.flutterEngine!) return true } } ``` ## 原生通信 ### 从Flutter调用原生 ```dart // 获取配置 final config = await _channel.invokeMethod('getInitConfig'); // 发送数据 await _channel.invokeMethod('sendData', {'data': 'Hello from Flutter'}); ``` ### 从原生调用Flutter 原生端可以通过MethodChannel调用Flutter方法。 ## 使用示例 ### 屏幕适配 ```dart import 'package:flutter_screenutil/flutter_screenutil.dart'; // 使用.r单位适配尺寸 Container( width: 100.r, height: 50.r, ) // 使用.sp单位适配字体 Text( 'Hello', style: TextStyle(fontSize: 16.sp), ) // 使用.w和.h适配宽度和高度 SizedBox( width: 200.w, height: 100.h, ) ``` ### 加载指示器 ```dart import 'package:flutter_easyloading/flutter_easyloading.dart'; // 显示加载 EasyLoading.show(status: 'Loading...'); // 显示成功 EasyLoading.showSuccess('Success!'); // 显示错误 EasyLoading.showError('Error!'); // 隐藏 EasyLoading.dismiss(); ``` ### 工具类 #### 日志工具 ```dart import 'package:flutter_module/utils/log_utils.dart'; // 不同级别的日志 LogUtils.v('Verbose message'); LogUtils.d('Debug message'); LogUtils.i('Info message'); LogUtils.w('Warning message'); LogUtils.e('Error message'); LogUtils.wtf('WTF message'); ``` #### 时间工具 ```dart import 'package:flutter_module/utils/date_time_utils.dart'; // 格式化时间 String formatted = DateTimeUtils.formatDateTime(DateTime.now()); String dateOnly = DateTimeUtils.formatDate(DateTime.now()); // 从时间戳转换 DateTime dateTime = DateTimeUtils.fromTimestamp(1640995200000); String formatted = DateTimeUtils.formatTimestamp(1640995200000); // 相对时间 String relative = DateTimeUtils.getRelativeTime(DateTime.now().subtract(Duration(hours: 2))); // 当前时间戳 int timestamp = DateTimeUtils.currentTimestamp(); ``` ## 运行 ```bash flutter pub get flutter run ``` ## 构建 ```bash # Android AAR flutter build aar # iOS Framework flutter build ios-framework ```