# GetX 框架文档 ## 1. 核心功能 ### 1.1 状态管理 - **响应式状态管理**:使用 Rx 变量实现数据响应式更新 - **简单状态管理**:通过 GetBuilder 实现局部状态更新 - **依赖注入**:使用 Get.put() 和 Get.find() 管理依赖 - **服务定位**:全局访问控制器和服务 ### 1.2 路由管理 - **导航系统**:Get.to()、Get.back()、Get.off()、Get.offAll() - **命名路由**:支持命名路由配置 - **参数传递**:方便的页面间参数传递 - **过渡动画**:内置多种过渡动画效果 - **嵌套导航**:支持嵌套路由结构 ### 1.3 依赖注入 - **全局依赖**:单例模式管理服务 - **懒加载**:按需初始化服务 - **生命周期管理**:自动处理依赖的生命周期 ### 1.4 国际化 - **多语言支持**:配置多语言资源 - **动态语言切换**:运行时切换语言 - **语言资源管理**:集中管理语言文件 ### 1.5 主题管理 - **亮/暗主题**:支持主题模式切换 - **自定义主题**:灵活配置主题样式 - **主题资源**:统一管理主题相关资源 ## 2. 组件 ### 2.1 消息弹窗 - **Snackbar**: ```dart Get.snackbar('标题', '内容'); ``` - 支持自定义标题、内容、图标、颜色 - 可设置持续时间、位置、行为 ### 2.2 对话框 - **默认对话框**: ```dart Get.defaultDialog( title: '标题', content: Text('内容'), confirm: ElevatedButton(onPressed: () => Get.back(), child: Text('确定')), ); ``` - **自定义对话框**: ```dart Get.dialog(AlertDialog(...)); ``` ### 2.3 底部弹窗 - **BottomSheet**: ```dart Get.bottomSheet( Container( child: Column(children: [...]), ), ); ``` ### 2.4 状态管理组件 - **GetBuilder**: ```dart GetBuilder( builder: (controller) => Text(controller.count.toString()), ); ``` - **Obx**: ```dart Obx(() => Text(controller.count.value.toString())); ``` - **GetX**: ```dart GetX( init: Controller(), builder: (controller) => Text(controller.count.value.toString()), ); ``` ## 3. 工具类 ### 3.1 设备信息 - `Get.width`/`Get.height`:屏幕尺寸 - `Get.context`:当前上下文 - `Get.isDarkMode`:深色模式状态 - `Get.mediaQuery`:媒体查询 ### 3.2 存储 - `GetStorage`:轻量级本地存储 ```dart final box = GetStorage(); box.write('key', 'value'); box.read('key'); ``` ### 3.3 网络请求 - `GetConnect`:网络请求工具 ```dart final api = GetConnect(); var response = await api.get('https://api.example.com'); ``` ### 3.4 其他工具 - `Get.focusScope`:焦点管理 - `Get.keyboard`:键盘管理 - `Get.platform`:平台信息 - `Get.isIOS`/`Get.isAndroid`:平台判断 ## 4. 性能优势 ### 4.1 轻量级 - 核心库体积小 - 内存占用低 - 无代码生成需求 ### 4.2 高效响应式 - 基于 Streams 的响应式系统 - 智能依赖跟踪 - 避免不必要的重建 ### 4.3 启动速度 - 初始化快速 - 路由切换流畅 - 热重载响应快 ### 4.4 开发效率 - 简洁的 API - 减少样板代码 - 易于学习和使用 ## 5. 最佳实践 ### 5.1 控制器设计 - 按功能模块划分控制器 - 使用 `onInit()` 初始化数据 - 使用 `onClose()` 清理资源 ### 5.2 状态管理 - 简单状态使用 GetBuilder - 复杂状态使用 Obx - 全局状态使用单例控制器 ### 5.3 路由管理 - 使用命名路由提高代码可读性 - 合理使用过渡动画 - 注意路由栈管理 ### 5.4 依赖注入 - 服务类使用懒加载 - 控制器使用 Get.put() - 避免过度依赖注入 ## 6. 版本信息 - **当前版本**:get: ^4.7.3 - **更新日志**:参考 pub.dev 官方文档 ## 7. 示例代码 ### 7.1 基本用法 ```dart // 1. 创建控制器 class HomeController extends GetxController { var count = 0.obs; void increment() { count.value++; } } // 2. 注入控制器 final controller = Get.put(HomeController()); // 3. 使用状态 Obx(() => Text('Count: ${controller.count.value}')); // 4. 导航 Get.to(SecondPage()); // 5. 显示消息 Get.snackbar('提示', '操作成功'); ``` ### 7.2 高级用法 ```dart // 命名路由 GetMaterialApp( routes: { '/': (context) => HomePage(), '/second': (context) => SecondPage(), }, ); // 参数传递 Get.toNamed('/second', arguments: {'id': 123}); // 接收参数 final arguments = Get.arguments; ``` ## 8. 总结 GetX 是一个功能强大、性能优秀的 Flutter 框架,通过提供简洁的 API 和丰富的功能,大大简化了 Flutter 应用的开发流程。它不仅提供了状态管理、路由管理等核心功能,还提供了许多实用的工具和组件,帮助开发者快速构建高质量的 Flutter 应用。 GetX 的设计理念是"简洁而强大",通过减少模板代码和提供直观的 API,让开发者能够更专注于业务逻辑的实现。同时,它的性能优势也使得应用运行更加流畅,用户体验更好。