我正在尝试将Cubit状态管理用于表单(验证和提交)。有什么我可以效仿的例子吗?
我已经尝试实现它并且它可以工作,但是每次出现错误时,它会再次向我显示带有空字段的表单,因为该小部件已用初始数据重新绘制。我该怎么解决?
在以下表单上找到我的Cubit消费者代码:
BlocConsumer<LoginCubit, LoginState> buildLoginCard(BuildContext context) {
return BlocConsumer<LoginCubit, LoginState>(
listener: (context, state) {
if (state is LoginError) {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text(state.message),
backgroundColor: Colors.red,
),
);
} else if (state is LoginSuccess) {
BlocProvider.of<AuthCubit>(context).autoLogin();
}
},
builder: (context, state) {
if (state is LoginInProgress) {
return LoadingWidget();
} else {
return LoginCardWidget();
}
},
);
}
答案 0 :(得分:0)
您可以尝试在BlocConsumer
之后将其添加到您的listener
buildWhen: (previous, current) {
if (current is LoginError)
return false;
else
return true;
},
在这种情况下,如果状态为错误,它将不会重建窗口小部件起点,并且字段将具有自己的值而不会被更改