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 小时前
Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
flutter·macos·ios·objective-c·iphone·swift·safari
小蜜蜂嗡嗡9 小时前
flutter flutter_vlc_player播放视频设置循环播放失效、初始化后获取不到视频宽高
flutter
孤鸿玉11 小时前
[Flutter小技巧] Row中widget高度自适应的几种方法
flutter
bawomingtian12311 小时前
FlutterView 源码解析
flutter
Zender Han15 小时前
Flutter 进阶:实现带圆角的 CircularProgressIndicator
flutter
nc_kai19 小时前
Flutter 之 每日翻译 PreferredSizeWidget
java·前端·flutter
littlegnal19 小时前
Flutter Add-to-app profiling
flutter
0wioiw01 天前
Flutter基础(FFI)
flutter
Georgewu10 天前
【HarmonyOS 5】鸿蒙跨平台开发方案详解(一)
flutter·harmonyos