Umu*_*pat 7 flutter flutter-getx
我想根据 PressBool 是 false 还是 true 来更改小部件的主体。
这是我写的GetxController。
import 'package:get/state_manager.dart';
class PressedState extends GetxController{
var pressedBool = true;
changeStatus() {
if(pressedBool){
pressedBool = false;
}
else {
pressedBool = true;
}
update();
}
}
Run Code Online (Sandbox Code Playgroud)
这里是 GetX 更新和监听应该改变页面正文的地方:
final PressedState pressController = Get.put(PressedState());
return MaterialButton(
onPressed: () {
pressController.changeStatus();
},
child:
pressController.pressedBool
? Container(...) : Container(...)), ...
Run Code Online (Sandbox Code Playgroud)
如何让 GetX 监听 PressBool 变量?
awa*_*aik 20
有时,只需监听更改并更改其他一些控制器或变量的值就很有用。例如,如果我们想从另一个屏幕更改选项卡。
我们可以使用 Rx 变量创建控制器
class TabStateController extends GetxController {
RxInt tabIndex = 0.obs;
}
Run Code Online (Sandbox Code Playgroud)
之后,在带有选项卡的屏幕上聆听更改
_tabStateController.tabIndex.listen((value) {
_tabController.index = value;
});
Run Code Online (Sandbox Code Playgroud)
因此,我们可以监听可观察变量的变化。
小智 8
return MaterialButton(
onPressed: () {
pressController.changeStatus();
},
child:
GetBuilder<PressedState>(
init: PressedState()
builder: (pressController) {
return pressController.pressedBool
? Container(...) : Container(...))
}
),
Run Code Online (Sandbox Code Playgroud)
YourController.dart
import 'package:get/state_manager.dart';
class PressedState extends GetxController{
RxBool pressedBool = true.obs;
void changeStatus() {
pressedBool.toggle();
}
}
Run Code Online (Sandbox Code Playgroud)
YourView.dart
final Controller pressController = Get.put(PressedState());
return MaterialButton(
onPressed: () {
pressController.changeStatus();
},
child: Obx(() {
return pressController.pressedBool.isTrue
? Container(...)
: Container(...),
})
Run Code Online (Sandbox Code Playgroud)
ever例如,您可以在控制器上使用方法
final Controller c = Get.put(Controller());
ever(c.counter, (value) => print("$value has been changed"));
Run Code Online (Sandbox Code Playgroud)
或者在控制器中,你声明这个
import 'package:get/get.dart';
class Controller extends GetxController {
var counter = 50.obs;
void increment() {
counter = counter + 1;
}
@override
void onInit() {
ever(counter, (value) => print("$value has been changed!!!"));
super.onInit();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40141 次 |
| 最近记录: |