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

211 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<Controller>(
builder: (controller) => Text(controller.count.toString()),
);
```
- **Obx**
```dart
Obx(() => Text(controller.count.value.toString()));
```
- **GetX**
```dart
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`:轻量级本地存储
```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让开发者能够更专注于业务逻辑的实现。同时它的性能优势也使得应用运行更加流畅用户体验更好。