颤振 BlocProvider 导航

Posted

技术标签:

【中文标题】颤振 BlocProvider 导航【英文标题】:flutter BlocProvider Navigation 【发布时间】:2021-11-24 17:11:00 【问题描述】:

假设我们使用以下代码导航到“PageA”:

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) 
      return BlocProvider(
        create: (context) => BlocA(),
        child: PageA(),
      );
    ,
  ),
);

当“PageA”导航到“PageB”时。如何访问“BLocA”? 我尝试使用以下代码从“PageA”导航到“PageB”,但它崩溃了。

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) 
      return BlocProvider(
        create: (context) => contxt.read<BlocA>(),
        child: PageB(),
      );
    ,
  ),
);

【问题讨论】:

【参考方案1】:

为了将已经创建的块传递到后续屏幕,您可以使用BlocProvider.value 更改后您的代码将如下所示:

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) 
      return BlocProvider.value(
        value: BlocProvider.of<BlocA>(context),
        child: PageB(),
      );
    ,
  ),
);

PageB 现在应该可以检索 blocA。

【讨论】:

BlocProvider 没有“值”命名属性 对不起,我的错,我已经更正了代码。

以上是关于颤振 BlocProvider 导航的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤振中使用 BlocProvider

根据 Flutter 中的 Provider 值变化在屏幕之间导航

Flutter 中的 Bloc Provider 和 Normal Provider 有啥区别?

使用不包含 Bloc 类型的上下文调用 BlocProvider.of()

Flutter cubit blocprovider 找不到正确的提供者

导航到新页面时 BLOC 丢失上下文