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的值,
由于count是Rx类型,所以当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。
二,测试效果:

浙公网安备 33010602011771号