状态管理
GetX安装
dart
// 方式一
// 在pubspec.yaml文件中添加get依赖
dependencies:
get: 4.6.6
// 执行:flutter packages get 重新安装依赖即可
// 方式二
flutter pub add http
// 如果提示没有安装成功可以尝试重启ide
GetX状态管理
GetX
的状态管理原理是基于响应式编程和依赖注入的。在GetX
中,Controller
是状态的管理者,它通常继承自GetxController
。Controller
中的变量可以是observable
类型的变量,这意味着它们可以被观察,并在变化时通知所有依赖它们的Widget
。GetX
使用Rx
库来实现响应式编程,它可以监听observable
对象的变化,并在变化时触发更新。当一个observable
对象的值改变时,GetX
会自动通知所有依赖它的Widget
,并触发它们的重建。
GetX
还提供了依赖注入的功能,它可以帮助我们轻松地管理Controller
的生命周期,并提高应用程序的性能和内存使用效率。使用依赖注入,我们可以将Controller
实例化并注册到GetX
中。当我们需要使用Controller
时,GetX
会将已经实例化的Controller
注入到我们需要使用它的Widget
中,这可以避免重复实例化Controller
,提高应用程序的性能和内存使用效率。 参考资料:https://juejin.cn/post/7231184167735820346
Obx
Obx
是GetX
库中的一个特殊Widget
,它可以将Widget
与observable
对象绑定在一起。当observabel
对象的值改变时,Obx
会自动重新构建Widget
。Obx
通常用于绑定单个变量的情况。
dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(MaterialApp(home: Home()));
class Home extends StatelessWidget {
var count = 0.obs; // observable类型的变量
@override
Widget build(context) => Scaffold(
appBar: AppBar(title: Text("counter")),
body: Center(
child: Obx(() => Text("$count")),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.savings),
onPressed: () => {
count = count + 10
}
));
}
dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(MaterialApp(home: MyWidget()));
class MyController extends GetxController {
var count = 0.obs;
increment() => count++;
}
class MyWidget extends StatelessWidget {
final MyController controller = Get.put(MyController());
MyWidget({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Obx Demo'),
),
body: Center(
child: Obx(() => Text(
'Count: ${controller.count}',
style: const TextStyle(fontSize: 24),
)),
),
floatingActionButton: FloatingActionButton(
onPressed: () => controller.increment(),
child: const Icon(Icons.add),
),
);
}
}
路由管理
GetX路由管理:https://juejin.cn/post/7234324615015497787?searchId=202310241527044F1DA052B7258FB7A7F1