我有一个flutter小部件状态类,如下所示。我在initState((中调用Provider.of<AppData>(context, listen: false).recalculateCart();
。
当我运行时,我得到的错误是在构建过程中调用的setState((或markNeedsBuild((
我应该如何解决这些问题?
class CartPageState extends State<CartPage> {
final TextEditingController _couponController = TextEditingController();
@override
void initState() {
// TODO: implement initState
super.initState();
Provider.of<AppData>(context, listen: false).recalculateCart();
}
@override
Widget build(BuildContext context) {
if (Provider.of<AppData>(context, listen: false).selectedStoreId == null){
Provider.of<AppData>(context, listen: false).setPageAfterStoreSelection('cart');
return ChooseStorePage(title: 'Choose Store to Continue');
}
...
}
此外,这里还有recomputeCart((函数:
void recalculateCart() {
notifyListeners();
}
问题是,当实际构建尚未完成时,会进行重新构建,因此您可以将函数放入addPostFrameCallback方法中,以便在第一次构建完成后执行该函数,请尝试下一次:
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
Provider.of<AppData>(context, listen: false).recalculateCart();
});
}