[英]Flutter GetX setState
bool download=false; setState(() {download=true;});download==true?Text("new"):("old");
如何在没有状态小部件的情况下使用 get X 编写此代码。
谢谢;
首先定义一个 controller class
class ControllerClass extends GetxController{
RxBool download == false.obs;
}
在你的无状态 class 你可以 state 一组有两种方法
像这样先注入一个 controller
ControllerClass controller = Get.put(ControllerClass());
第一的:
Obx(()=>controller.download.value == true?Text("new"):("old"))
在一些 function
downloadCondition(){
controller.download.value == // true or false;
}
第二:
GetBuilder<ControllerClass>(builder: (controller){ return
controller.download.value == true?
Text("new"):("old"));}
在一些 function
downloadCondition(){
controller.download.value == // true or false;
controller.update();
}
首先尝试创建一个 controller:
class ControllerName extends GetxController {
final download = false.obs;
yourFunc(){
download(!download.value);
}
}
我通常使用obx然后
// You can also put your controller above on stateful or inside depends on you
// final controller = Get.put(ControllerName());
class YourPageName extends StatelessWidget {
YourPageName({Key? key}) : super(key: key);
final controller = Get.put(ControllerName());
@override
Widget build(BuildContext context) {
return Obx(()=>
Scaffold(
body: SafeArea(
child: Column(
children:[
Text(controller.download.isFalse ? "Old" : "New"),
SizedBox(
height: 60,
width: 120,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.red,
child: Center(
child: Text("Click")
),
onPressed: ()=>controller.yourFunc(),
),
),
]
),
),
),
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.