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),
      ),
    );
  }
}
相关推荐
山璞16 小时前
将一个 Flutter 项目转为用 ArkUI-X 框架实现(4)
flutter·harmonyos
GitLqr17 小时前
彻底搞懂 Dart Stream:从底层原理到 Flutter 实战与面试题集
flutter·响应式编程·dart
louisgeek1 天前
Flutter Visibility 和 Offstage 的区别
flutter
YM52e1 天前
鸿蒙Flutter Padding内边距:EdgeInsets详解
android·学习·flutter·华为·harmonyos·鸿蒙
SharpCJ1 天前
Dart 基础入门
flutter·dart
LinXunFeng2 天前
给 Flutter 插件加上 Swift Package Manager 支持
flutter·swift
GitLqr3 天前
Flutter 3.44 性能飞跃:深度解析 Android Platform View 的 HCPP 新特性
android·flutter·性能优化
程序员老刘·3 天前
Flutter版本选择指南:3.44密集修BUG,9月大限将至 | 2026年7月
flutter·ai编程·跨平台开发
GitLqr4 天前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios