在 flutter 中显示关于 cubit 状态的警报
show alert on cubit state in flutter
我知道我们可以 return 在特定的 cubit 状态上使用不同的小部件,但是我们如何在状态上显示警报或其他交互:
BlocBuilder<LoginCubit, LoginState> (
builder: (context, LoginState loginState) {
if (loginState is LoginInitial) {
return Text("LoginInitial");
} else if (loginState is LoginLoading) {
return Text("LoginLoading");
} else if (loginState is LoginLoaded) {
return Text("LoginLoaded");
} else if (loginState is LoginError) {
return Text("LoginError");
} else {
return Container();
}
},
)
我想在 LoginError 中显示一个警告对话框。
您可以使用 BlocConsumer
,它同时具有 builder
和 listener
:
builder
属性是您已经知道的小部件构建器回调
listener
是状态更改时调用的回调,您可以在那里做几乎任何事情。
要获得更细粒度的控制,您可以使用 buildWhen
和 listenWhen
,它们分别触发 builder
或 listener
回调,如果它们 return true
.
例如,您可以看到我如何使用 BlocConsumer
在出现错误状态 here.
时显示 SnackBar
不要介意对类型进行双重检查
if (state is RegionalReportLoadingError)
因为它可能没用(根据文档),我只是想确定这一点,因为我对 listenWhen
的用法不是很清楚。
您可以在 the docs 中查看更多关于 BlocConsumer
的信息(不幸的是我不能 link 主播)。
我知道我们可以 return 在特定的 cubit 状态上使用不同的小部件,但是我们如何在状态上显示警报或其他交互:
BlocBuilder<LoginCubit, LoginState> (
builder: (context, LoginState loginState) {
if (loginState is LoginInitial) {
return Text("LoginInitial");
} else if (loginState is LoginLoading) {
return Text("LoginLoading");
} else if (loginState is LoginLoaded) {
return Text("LoginLoaded");
} else if (loginState is LoginError) {
return Text("LoginError");
} else {
return Container();
}
},
)
我想在 LoginError 中显示一个警告对话框。
您可以使用 BlocConsumer
,它同时具有 builder
和 listener
:
builder
属性是您已经知道的小部件构建器回调listener
是状态更改时调用的回调,您可以在那里做几乎任何事情。
要获得更细粒度的控制,您可以使用 buildWhen
和 listenWhen
,它们分别触发 builder
或 listener
回调,如果它们 return true
.
例如,您可以看到我如何使用 BlocConsumer
在出现错误状态 here.
SnackBar
不要介意对类型进行双重检查
if (state is RegionalReportLoadingError)
因为它可能没用(根据文档),我只是想确定这一点,因为我对 listenWhen
的用法不是很清楚。
您可以在 the docs 中查看更多关于 BlocConsumer
的信息(不幸的是我不能 link 主播)。