假设我有一个小部件,如下所示:
class ContactUsWidget extends StatefulWidget {
ContactUsWidget({Key key}) : super(key: key);
@override
_ContactUsWidgetState createState() => _ContactUsWidgetState();
}
class _ContactUsWidgetState extends State<ContactUsWidget> {
bool isLoading = false;
@override
Widget build(BuildContext context) {
return Form(...)
}
}
在我的表单里面,我有一个堆栈:
Stack(
children: [
Container(
color: isLoading ? Colors.grey : Colors.transparent,
),...
]
);
还有一个按钮:
FFButtonWidget(
onPressed: () async {
this.setState(() {
isLoading = true;
print(isLoading);
});
await sleep(Duration(seconds: 2));
this.setState(() {
isLoading = false;
print(isLoading);
});
},
)
然而;当我按下按钮时,isLoading
的值会发生变化(正如我从打印中看到的那样),但小部件不会重新呈现,因为容器的颜色保持不变
答案 0 :(得分:1)
问题是由 await sleep(Duration(seconds: 2));
引起的,详见@pskink 的回答。