在 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,它同时具有 builderlistener:

  • builder 属性是您已经知道的小部件构建器回调
  • listener 是状态更改时调用的回调,您可以在那里做几乎任何事情。

要获得更细粒度的控制,您可以使用 buildWhenlistenWhen,它们分别触发 builderlistener 回调,如果它们 return true.

例如,您可以看到我如何使用 BlocConsumer 在出现错误状态 here.

时显示 SnackBar

不要介意对类型进行双重检查

if (state is RegionalReportLoadingError)

因为它可能没用(根据文档),我只是想确定这一点,因为我对 listenWhen 的用法不是很清楚。

您可以在 the docs 中查看更多关于 BlocConsumer 的信息(不幸的是我不能 link 主播)。