flutter - 如何修复 Flutter 构建问题期间调用的 setState
问题描述
当用户转到详细信息屏幕时,我试图自动打开我的警告对话框,但由于某种原因,我在屏幕中的构建错误期间调用了 setState() 或 markNeedsBuild()(图片)。如果我能就如何解决此错误获得任何建议或帮助,我将不胜感激。
return Scaffold(
appBar: AppBarWidget(
appBar: AppBar(),
showReorder: false,
),
body: BaseView<CardViewModel>(
onDeactivate: (model) {},
onDispose: (model) {},
onModelReady: (model) {
model.getCard();
},
builder: (context, model, child) {
setState(() {
isLargeScreen = false;
if (model.cards.current != true) {
if (model.cards.alreadyShow == false) {
Future.delayed(Duration.zero, () {
staticwarningDialog(context);
});
}
}
});
return _body(model, height, width, context, widget.cardName);
},
));
解决方案
你可以移动你的setState
方法来initState
喜欢这个。记住不要在构建时使用 setState 方法。
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback(
(_) {
setState(() {
// Your code
});
},
);
}
推荐阅读
- velo - 创建问卷以在 wix velo 网站上显示策划的内容
- laravel - 来自 laravel 的无声打印
- javascript - 访问和依赖 useReducer 中的 Props 是一种反模式?
- git - Github 不会更新对分支和 heroku 的推送
- python - 我应该在机器学习服务器上设置 OMP_NUM_THREADS=1 吗?
- python - 如何从另一个类中的函数更改类变量
- javascript - 每个域的唯一会话 - NodeJS - Express 会话
- react-native - 反应导航 5,在第二个堆栈屏幕上隐藏底部标签栏?
- azure - 无法使用 C# 代码使用表单识别器客户端库从跨多个页面的 pdf 文件中读取相同的表数据
- google-apps-script - 简化谷歌表格中的重复公式计算