flutter: getx中GetxController的生命周期以及接收参数

一,代码:

controller

import 'package:get/get.dart';

// 定义控制器
class CounterController extends GetxController {

  @override
  void onInit() {
    super.onInit();
    print('Controller onInit:初始化');
  }

  @override
  void onReady() {
    super.onReady();
    print('Controller onReady:已准备好');
  }

  @override
  void onClose() {
    super.onClose();
    print('Controller onClose:被销毁');
    // 释放资源,如取消订阅
  }

  //变量 obs
  var count = 0.obs;

  //接收参数 obs
  var id =  (Get.arguments["id"] as int).obs;
  var name = (Get.arguments["name"] as String).obs;

  //自增的方法
  void increment() {
    count++;
  }
}

说明: .obs表示count是一个Rx变量,它会自动通知依赖它的 Widget 进行重建。
increment方法用于增加count的值,
由于countRx类型,所以当count的值改变时,相关 UI 会自动更新。

view

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'CounterController.dart';

// 使用GetView
class CounterView extends GetView<CounterController> {
  CounterController controller = Get.put(CounterController());
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GetView Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Obx(() => Text('id: ${controller.id.value}')),
            Obx(() => Text('name: ${controller.name.value}')),
            Obx(() => Text('Count: ${controller.count.value}')),
            ElevatedButton(
              onPressed: controller.increment,
              child: Text('Increment'),
            ),
          ],
        ),
      ),
    );
  }
}

说明:obx是 Getx 提供的一个 Widget,用于自动监听Rx变量的变化并重建相关 UI。

二,测试效果:

 

posted @ 2025-04-19 10:43  刘宏缔的架构森林  阅读(225)  评论(0)    收藏  举报