Files
wushu/lib/services/document/getx.md
2026-04-02 07:06:55 +08:00

4.9 KiB
Raw Blame History

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
    Get.snackbar('标题', '内容');
    
    • 支持自定义标题、内容、图标、颜色
    • 可设置持续时间、位置、行为

2.2 对话框

  • 默认对话框
    Get.defaultDialog(
      title: '标题',
      content: Text('内容'),
      confirm: ElevatedButton(onPressed: () => Get.back(), child: Text('确定')),
    );
    
  • 自定义对话框
    Get.dialog(AlertDialog(...));
    

2.3 底部弹窗

  • BottomSheet
    Get.bottomSheet(
      Container(
        child: Column(children: [...]),
      ),
    );
    

2.4 状态管理组件

  • GetBuilder
    GetBuilder<Controller>(
      builder: (controller) => Text(controller.count.toString()),
    );
    
  • Obx
    Obx(() => Text(controller.count.value.toString()));
    
  • GetX
    GetX<Controller>(
      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:轻量级本地存储
    final box = GetStorage();
    box.write('key', 'value');
    box.read('key');
    

3.3 网络请求

  • GetConnect:网络请求工具
    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 基本用法

// 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 高级用法

// 命名路由
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让开发者能够更专注于业务逻辑的实现。同时它的性能优势也使得应用运行更加流畅用户体验更好。