flutter BlocProvider 导航

rez*_*eza 6 navigation flutter bloc

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

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) {
      return BlocProvider(
        create: (context) => BlocA(),
        child: PageA(),
      );
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)

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

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) {
      return BlocProvider(
        create: (context) => contxt.read<BlocA>(),
        child: PageB(),
      );
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)

Abd*_*rim 10

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

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) {
      return BlocProvider.value(
        value: BlocProvider.of<BlocA>(context),
        child: PageB(),
      );
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)

PageB 现在应该能够检索 blocA。