状态用getX管理,初始状态为false。 当按钮按下时,它变为true,我尝试将其表示为Text 小部件以指示更改,但小部件并没有改变。有什么问题?
文本小部件一直只显示“假”
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
runApp(GetMaterialApp(home : Home()));
}
class BoolItem extends GetxController{
dynamic item=false.obs;
changeItem()=> item=true;
}
class Home extends StatefulWidget {
const Home({ Key? key }) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(context) {
final BoolItem b=Get.put(BoolItem());
return Scaffold(
appBar: AppBar(title: Text('welcome')),
body: Center(
child: Column(children: <Widget>[
FloatingActionButton(child: Icon(Icons.add),
onPressed: (){
b.changeItem();
}
),
b.item == true
? Text('true')
: Text('false')
]
))
);
}
}
答案 0 :(得分:0)
您应该从小部件的 final BoolItem b = Get.put(BoolItem());
方法中删除 build
。每次调用 build 方法时,都会创建一个新的 BoolItem
,其值为 false
,这导致它永远不会更改为 true。
答案 1 :(得分:0)
用 FloatingActionButton
包裹 Obx
Obx(
()=> FloatingActionButton(child: Icon(Icons.add),
onPressed: (){
b.changeItem();
}
),
b.item == true
? Text('true')
: Text('false')
)
同时将 changeItem()=> item=true;
更新为 changeItem()=> item.value=true;