如何修复 Navigator 在 flutter bloc 模式下不工作?

How to fix Navigator not working in flutter bloc pattern?

我正在尝试使用 Pokemon api 制作一个应用程序作为练习。 我正在尝试使用 Bloc 模式来实现它。 如果单击 GridTile,则需要获取 indexID 并移动到 DetailPage。 获取 IndexID 很好,但它不会转到页面。 我似乎无法构建页面,但我不知道问题出在哪里。 如果你能告诉我问题是什么,我将不胜感激。

我把代码放在了github因为如果能看到完整的代码就好了

https://github.com/Jun-Kor/pokedex.git

主要问题不是您的导航,而是您的 Bloc,当您进入 PokemonDetailsView 页面时,会发生 BlocBuilder 它找不到它的提供者(主要的那个)但是,如果我们直接去那里,你已经写好了,对吧?

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.red,
      ),
      home: MultiBlocProvider( // here is the problem
        providers: [
          BlocProvider<PokemonBloc>(
              create: (context) =>
                  PokemonBloc()..add(const PokemonPageRequestEvent(page: 0))),
          BlocProvider<PokemonDetailsBloc>(
              create: (context) => PokemonDetailsBloc()),
        ],
        child: const PokedexView(),
      ),
    );
  }
}

好吧,MultiBlocProvider 必须是将为整个 MaterialApp 提供的主要父级,而不是它,我的意思是?这就是为什么问题是要求 Bloc 提供商,但我 它找不到一个。

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(  // change here
      providers: [
        BlocProvider<PokemonBloc>(
            create: (context) =>
                PokemonBloc()..add(const PokemonPageRequestEvent(page: 0))),
        BlocProvider<PokemonDetailsBloc>(
            create: (context) => PokemonDetailsBloc()),
      ],
      child: MaterialApp(
        title: 'Material App',
        debugShowCheckedModeBanner: false,
        theme: ThemeData(
          primarySwatch: Colors.red,
        ),
        home: const PokedexView(),
      ),
    );
  }
}