未实现的缺少静态目标的处理

Unimplemented handling of missing static target

我在开始屏幕上有一个登录按钮。我希望当用户单击此登录按钮时,我将使用“MaterialPageRoute”转到登录屏幕,并且我想将“BlocProvider”传递给登录屏幕。我做了以下操作,但发生了错误。

“错误信息

════════ 组件库捕获异常═════════════════════════════════ ═══ 以下 _CompileTimeError 被抛出构建 MyApp(脏): 未实现的缺少静态目标的处理。 “

我是一个健忘的 Flutter 新手。我期待着大家的帮助。非常感谢。

   press: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) {
                  return BlocProvider<LoginBloc>(
                      create: (context) =>
                          LoginBloc(userRepository: _userRepository),
                      child: BlocBuilder<LoginBloc, LoginState>(
                        builder: (context, loginState) {
                          print('$loginState');
                          return LoginScreen();
                        },
                      ) //LoginPage,
                      );
                },
              ),
            );
          },

要将 bloc 传递到另一个屏幕,请使用 BlocProvider.Value()

见下面的代码:

press: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) {
                  return BlocProvider.value(
                         value: BlocProvider.of<LoginBloc>(context),
                         child: LoginScreen(),
                   );
                },
              ),
            );
          },

然后我们可以从 LoginScreen 检索 LoginBloc:

// with extensions
context.read<LoginBloc>();

// without extensions
BlocProvider.of<LoginBloc>(context);

以上代码片段导致一次性查找,并且不会通知小部件更改。要检索实例并订阅后续状态更改,请使用:

// with extensions
context.watch<LoginBloc>();

// without extensions
BlocProvider.of<LoginBloc>(context, listen: true);