我试图将第一次按钮设置为禁用,当用户输入启用的金额时,按钮禁用可以正常工作,但当我在textformfield中输入金额时,它会给出以下错误。
I/flutter (29519): âââ¡ EXCEPTION CAUGHT BY WIDGETS LIBRARY
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
I/flutter (29519): The following assertion was thrown building
TextFormField(dirty, state: _TextFormFieldState#b89da):
I/flutter (29519): setState() or markNeedsBuild() called during build.
I/flutter (29519): This HomePage widget cannot be marked as needing to
build because the framework is already in the
I/flutter (29519): process of building widgets. A widget can be marked as
needing to be built during the build phase
I/flutter (29519): only if one of its ancestors is currently building.
This exception is allowed because the framework
I/flutter (29519): builds parent widgets before children, which means a
dirty descendant will always be built.
I/flutter (29519): Otherwise, the framework might not visit this widget
during this build phase.
I/flutter (29519): The widget on which setState() or markNeedsBuild() was
called was:
我的代码:
var _onPressed;
if (isButtonDisabled) {
_onPressed = () {
print("Hello");
};
}
文本表单域代码:
child: TextFormField(
decoration: InputDecoration(
contentPadding: EdgeInsets.only(
left: 12.0,
right: 12.0,
top: 12.0,
bottom: 12.0
),
labelText: 'Enter amount',
hintText: 'Enter amount',
hintStyle: TextStyle(
color: Colors.red,
fontSize: 14.0
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(0.0)
),
),
keyboardType: TextInputType.number,
autovalidate: true,
validator: (String txt) {
if (txt.length == 2) {
setState(() {
isButtonDisabled = true;
});
} else {
setState(() {
isButtonDisabled = false;
});
}
}
),
按钮代码:
FlatButton(
child: Text("Confirm"),
onPressed: _onPressed,
)