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),
      ),
    );
  }
}
相关推荐
火柴就是我9 小时前
flutter 之真手势冲突处理
android·flutter
Speed12310 小时前
`mockito` 的核心“打桩”规则
flutter·dart
法的空间10 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
恋猫de小郭10 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
玲珑Felone11 小时前
从flutter源码看其渲染机制
android·flutter
ALLIN1 天前
Flutter 三种方式实现页面切换后保持原页面状态
flutter
Dabei1 天前
Flutter 国际化
flutter
Dabei1 天前
Flutter MQTT 通信文档
flutter
Dabei1 天前
Flutter 中实现 TCP 通信
flutter
孤鸿玉1 天前
ios flutter_echarts 不在当前屏幕 白屏修复
flutter