发生异常。 FlutterError(在构建期间调用 setState() 或 markNeedsBuild())。 此 _ModalScope 小部件无法标记为需要构建,因为框架已经在构建小部件的过程中。仅当小部件的祖先之一当前正在构建时,才可以将其标记为需要在构建阶段构建。允许此异常,因为框架在子窗口之前构建父窗口小部件,这意味着将始终构建脏后代。否则,框架可能不会在此构建阶段访问此小部件。 调用 setState() 或 markNeedsBuild() 的小部件是: _ModalScope-[LabeledGlobalKey<_ModalScopeState>#96ae3] 发出有问题的调用时当前正在构建的小部件是: 有帐户或没有帐户)
代码是: @覆盖 小部件构建(BuildContext 上下文){
返回支架(
resizeToAvoidBottomInset: false ,
key: scaffold,
backgroundColor: Color(0xfff8f8f8),
body: SafeArea(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
TopTitle(
subsTitle: "Welcome To FoodZone",
title: "Login"),
Center(
child: Container(
height: 200,
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
MyTextFormField(title: "Email", controller: email,),
SizedBox(
height: 10,
),
MyPasswordTextFormField(title: "Password", controller: password,),
MyButton(名称: "登录", onPressed: (){ 验证();
},
),
HaveAccountOrNot(onTap: () {
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (ctx) => SignUp(),
)
);
},
title: "I don't have an Account", subsTitle: "SignUp"),
],
),
),
),
],
),
),
),
);
} }
setState() or markNeedsBuild() called during build
错误通常是由 initState 调用的某些函数引起的。你可以尝试将 addPostFrameCallback
添加到你的 initState 代码中:
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
// your code
});
super.initState();
}
您提供的示例代码似乎很好,为了了解更多上下文,您可以在此处共享整个文件代码,以便我们找出主要问题是什么。