@override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
      providers: AppPages.allBlocProviders(context) ,
      child: ScreenUtilInit(
      builder: (context, child) =\>  MaterialApp(
          debugShowCheckedModeBanner: false,
          home: const Welcome(),
          theme: ThemeData(
            appBarTheme: const AppBarTheme(
              iconTheme: IconThemeData(
                color: AppColors.primaryText
              ),
              elevation: 0,
              backgroundColor: Colors.white
            )
          ),
          onGenerateRoute: AppPages.GenerateRouteSettings,
        ),
      )
    );
  }

这是导致错误的主要DART文件

class PageEntity{
  String route;
  Widget page;
  dynamic bloc;

  PageEntity({required this.route, required this.page,  this.bloc});
}

这是帮助循环访问提供程序的实体类

class AppPages{

  static List<PageEntity> routes (){
    return [
      PageEntity(
      route: AppRoutes.INITIAL, 
      page: const Welcome(), 
      bloc: BlocProvider(create: (_)=>WelcomeBloc(),)
    ),
      PageEntity(
      route: AppRoutes.SING_IN, 
      page: const SignInPage(), 
      bloc: BlocProvider(create: (_)=>SignInBlocs(),)
    ),
      PageEntity(
      route: AppRoutes.REGISTER, 
      page: const Register(), 
      bloc: BlocProvider(create: (_)=>RegisterBlocs(),)
    ),
      PageEntity(
      route: AppRoutes.APPLICATION, 
      page: const Welcome(), 
    ),
    ];
  }


// return all the bloc providers
   static List<dynamic> allBlocProviders(BuildContext context){
    List<dynamic> blocProviders = <dynamic>[];
    for(var bloc in routes()){
    
        blocProviders.add(bloc.bloc);
      
    }
    return blocProviders;
  }class AppPages{

  static List<PageEntity> routes (){
    return [
      PageEntity(
      route: AppRoutes.INITIAL, 
      page: const Welcome(), 
      bloc: BlocProvider(create: (_)=>WelcomeBloc(),)
    ),
      PageEntity(
      route: AppRoutes.SING_IN, 
      page: const SignInPage(), 
      bloc: BlocProvider(create: (_)=>SignInBlocs(),)
    ),
      PageEntity(
      route: AppRoutes.REGISTER, 
      page: const Register(), 
      bloc: BlocProvider(create: (_)=>RegisterBlocs(),)
    ),
      PageEntity(
      route: AppRoutes.APPLICATION, 
      page: const Welcome(), 
    ),
    ];
  }


// return all the bloc providers
   static List<dynamic> allBlocProviders(BuildContext context){
    List<dynamic> blocProviders = <dynamic>[];
    for(var bloc in routes()){
    
        blocProviders.add(bloc.bloc);
      
    }
    return blocProviders;
  }

}
This is where all the providers lies

我try 了什么:

我try 将返回类型动态更改为BlocProvider.

我将Providers属性更改为AppPages.allBLocProviders(Context)为[...AppPages.allBLocProviders(Context)].

推荐答案

您不应该在allBlocProviders函数中使用dynamic,所以您已经编写了dynamic的所有三个位置都应该放置BlocProvider,并判断该块是否不为空,如

static List<BlocProvider> allBlocProviders(BuildContext context){
  List<BlocProvider> blocProviders = <BlocProvider>[];
  for (var bloc in routes()){
    if (bloc.bloc != null) {
      blocProviders.add(bloc.bloc!);
    }
  }
  return blocProviders;
}

同样在PageEntity米的变化中

dynamic bloc;

BlocProvider? bloc;

Flutter相关问答推荐

如果文档确实存在,则FiRestore将";False";返回到";if-Document-Existes";...还是我说错了?

相同的Flutter 代码库,但Firebase登录适用于Web应用程序,但无法登录iOS应用程序

什么是dart :这只是dart ?

查询满足AND条件的文档的FiRestore

带有图标抖动的自定义下拉按钮

为什么Spotify Auth API返回400,而";code_verier不正确?

如何在Date Time类中只显示日期?

摆动更改标记可轻敲文本按钮样式

Riverpod Provider.family 和 HookConsumerWidget 不刷新 UI

ScaffoldMessenger 在等待键下方不起作用

在 Flutter 中使用条件语句设置 ImageProvider Object 类型的背景图像

如何将行推到列的底部

Flutter 自定义对齐

Flutter - 展开图标无法正常工作

如何获得Flutter 的时差?

从物理设备 Flutter 中移除 USB 后启动画面不可见?

在 flutter 中使用 Firebase 实时数据库数据创建无限滚动效果

Firebase Firestore 查询

在列表视图Flutter 中 Select 下一个单选按钮时单选按钮更改

我想将我的模型类对象发送到下一个屏幕之前我这样做首先我在第二个屏幕中声明对象