小编Sta*_*ahp的帖子

BlocProvider.of() 使用不包含 Bloc 的上下文调用 - 即使它包含

首先,我确实知道 BLoC 应该如何工作,它背后的想法以及我知道构造函数BlocProvider()BlocProvider.value()构造函数之间的区别。

为简单起见,我的应用程序有 3 个页面,其中包含一个像这样的小部件树:

App()=> LoginPage()=> HomePage()=>UserTokensPage()

我希望我LoginPage()可以访问,UserBloc因为我需要登录用户等。为此,我将LoginPage()构建器包装在App()小部件中,如下所示:

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      home: BlocProvider<UserBloc>(
        create: (context) => UserBloc(UserRepository()),
        child: LoginPage(),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这显然工作得很好。然后,如果用户成功登录,他将被导航到HomePage。现在,我需要访问我的两个不同的块,HomePage所以我用来进一步MultiBlocProvider传递现有的UserBloc并创建一个名为DataBloc. 我这样做:

  @override
  Widget build(BuildContext context) {
    return BlocListener<UserBloc, UserState>(
      listener: …
Run Code Online (Sandbox Code Playgroud)

navigation flutter bloc flutter-bloc

26
推荐指数
4
解决办法
3万
查看次数

标签 统计

bloc ×1

flutter ×1

flutter-bloc ×1

navigation ×1