getX简单使用 flutter
下面我用 GetX 再把同一个 Counter 示例实现一遍, 并且会和 Provider / Riverpod 做直观对比,方便你选。 ✅ GetX 版 Counter 示例(完整可用) 一、添加依赖 pubspec.yaml dependencies: flutter: sdk: flutter get: ^4.6.6 flutter pub get 二、创建 Controller(状态) ✅ GetX 的核心思想:Controller + 响应式变量 import 'package:get/get.dart'; class CounterController extends GetxController { var count = 0.obs; // observable void increment() { count++; } } 📌 .obs = 响应式变量 📌 不需要 notifyListeners() 三、main 中初始化(可选) void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return GetMaterialApp( home: HomePage(), ); } } ✅ GetMaterialApp 替代 MaterialApp 四、UI 中使用 ✅ 方式一:Obx(最常用 ✅) class HomePage extends StatelessWidget { final CounterController c = Get.put(CounterController()); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('GetX Counter')), body: Center( child: Obx(() => Text( '${c.count}', style: TextStyle(fontSize: 40), )), ), floatingActionButton: FloatingActionButton( onPressed: c.increment, child: Icon(Icons.add), ), ); } } ✅ 不需要 BuildContext ✅ 不需要 ConsumerWidget ✅ UI 极其简洁 五、另一种写法(依赖注入更干净) class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { final c = Get.find<CounterController>(); return Scaffold( body: Obx(() => Text('${c.count}')), ); } } 六、三种方案横向对比(重点) 维度 Provider Riverpod GetX 学习成本 ⭐⭐ ⭐⭐⭐ ⭐ 是否依赖 Context ✅ 是 ❌ 否 ❌ 否 类型安全 ❌ 运行时 ✅ 编译期 ❌ 运行时 响应式 ✅ ✅ ✅ 路由 / 弹窗 / 国际化 ❌ ❌ ✅ 内置 代码量 中 中 ✅ 最少 官方推荐 ✅ ✅✅ ❌ 大型项目稳定性 ✅ ✅✅ ⚠️ 争议较大 七、一句话选型建议(2026 年) • 🟢 新手 / 想快 → GetX • 🔵 正规军 / 长期维护 / 团队协作 → Riverpod • 🟡 老项目 / 简单状态 → Provider ⚠️ 注意: GetX 很强,但 不是 Flutter 官方生态,在复杂项目中常被诟病: - 黑魔法多 - 调试困难 - 升级风险
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……

浙公网安备 33010602011771号