flutter BlocProvider Navigation
Asked Answered
M

1

6

suppose that we navigate to "PageA" using the following code:

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

when "PageA" navigates to "PageB". how can I access "BLocA"? I have tried following code to navigate from "PageA" to "PageB" but it crashes.

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) {
      return BlocProvider(
        create: (context) => contxt.read<BlocA>(),
        child: PageB(),
      );
    },
  ),
);
Marchant answered 4/10, 2021 at 8:44 Comment(0)
V
10

In order to pass an already created bloc to consequent screen you can use the BlocProvider.value your code would be like this after the change :

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

PageB should be able to retrieve blocA now.

Vigue answered 4/10, 2021 at 9:29 Comment(2)
BlocProvider has not "value" named propertyMarchant
Sorry, my bad, I have corrected the code.Vigue

© 2022 - 2024 — McMap. All rights reserved.