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