Flutter 中

Get状态管理库中,GetxController是一个用于管理状态和逻辑的基类。它具有一系列的生命周期方法,用于在不同的阶段执行相关的操作。下面是GetxController的生命周期方法及其执行顺序:

  1. onInit(): 这个方法在GetxController创建并加入到管理器时调用。你可以在这里进行一些初始化操作,如初始化变量、订阅流等。
  2. onReady(): 这个方法在GetxController被异步加载后调用。你可以在这里执行一些异步操作,如网络请求、数据库读取等。需要注意的是,这个方法只会在第一次加载时调用,后续页面刷新不会再触发。
  3. onClose(): 这个方法在GetxController被永久关闭时调用,一般是页面销毁时。你可以在这里进行资源释放、取消订阅等清理操作,以防止内存泄漏。

除了生命周期方法,GetxController还提供了一些其他常用的方法和属性,例如:

  • update(): 用于通知管理器状态变化,更新UI。
  • ever(): 用于监听某个变量或Rx值的变化,类似于Stream中的listen方法。
  • once(): 监听某个变量或Rx值的第一次变化,之后不再监听。
  • debounce(): 在指定时间间隔内连续多次变化时,只执行最后一次变化。
  • interval(): 在指定时间间隔内连续多次变化时,每隔一段时间执行一次。

使用GetxController的示例代码:

复制代码
import 'package:get/get.dart';

class MyController extends GetxController {
  var count = 0;

  @override
  void onInit() {
    print('onInit called');
    super.onInit();
  }

  @override
  void onReady() {
    print('onReady called');
    super.onReady();
  }

  @override
  void onClose() {
    print('onClose called');
    super.onClose();
  }

  void increment() {
    count++;
    update(); // 通知状态变化,更新UI
  }
}

在页面中使用控制器:

复制代码
class MyPage extends StatelessWidget {
  final MyController myController = Get.put(MyController());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Page'),
      ),
      body: Center(
        child: Obx(() => Text('Count: ${myController.count}')),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => myController.increment(),
        child: Icon(Icons.add),
      ),
    );
  }
}
相关推荐
_大学牲1 小时前
Flutter 之魂 GetX🔥(二)全面解析路由管理
前端·flutter
恋猫de小郭2 小时前
Flutter 在 iOS 26 模拟器跑不起来?其实很简单
android·前端·flutter
大雷神19 小时前
Flutter鸿蒙开发
flutter·华为·harmonyos
shelutai1 天前
实现提供了完整的 Flutter Web 文件上传解决方案
前端·flutter
小仙女喂得猪1 天前
2025 Android原生开发者角度的Flutter 笔记整理(对比ReactNative)
android·flutter·react native
猪哥帅过吴彦祖1 天前
Flutter 系列教程:列表与网格 - `ListView` 和 `GridView`
前端·flutter·ios
程序员老刘2 天前
为什么我从不推荐GetX?11k星标背后的真相
flutter·客户端
dragon7252 天前
flutter riverpod原理浅析
flutter
恋猫de小郭2 天前
深入理解 Flutter 的 PlatformView 如何在鸿蒙平台实现混合开发
android·前端·flutter
浅蓝色2 天前
flutter平台判断后续
flutter·harmonyos