【问题标题】:Unimplemented handling of missing static target缺少静态目标的未实现处理
【发布时间】:2021-02-26 09:52:12
【问题描述】:

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

“错误信息

════════小部件库捕获的异常═════════════════════════════════════ ═ 在构建 MyApp(dirty) 时引发了以下 _CompileTimeError: 缺少静态目标的未实现处理。 "

我是 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,
                      );
                },
              ),
            );
          },

【问题讨论】:

    标签: flutter-bloc


    【解决方案1】:

    要将 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);
    

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

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

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2020-11-18
      • 2020-11-19
      • 2017-10-24
      • 1970-01-01
      相关资源
      最近更新 更多