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