Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 使用BlocProvider.value延迟实例化块_Flutter_Dart_Routes_Bloc_Flutter Bloc - Fatal编程技术网

Flutter 使用BlocProvider.value延迟实例化块

Flutter 使用BlocProvider.value延迟实例化块,flutter,dart,routes,bloc,flutter-bloc,Flutter,Dart,Routes,Bloc,Flutter Bloc,我将生成的路线与颤振一起使用,我希望 但我认为,可能示例解决方案的可扩展性不是最好的,因为集群是用路由器实例化的 是否有一种方法仅当用户访问该路由时才实例化它们 类批准者{ 最终_counterBloc=counterBloc(); 路由onGenerateRoute(路由设置设置){ 开关(设置.名称){ 案例“/”: 返回物料路线( 生成器:()=>BlocProvider.value( 值:_counterBloc, 子:主页(), ), ); 案例“/计数器”: 返回物料路线( 生成器:

我将生成的路线与颤振一起使用,我希望

但我认为,可能示例解决方案的可扩展性不是最好的,因为集群是用路由器实例化的

是否有一种方法仅当用户访问该路由时才实例化它们

类批准者{
最终_counterBloc=counterBloc();
路由onGenerateRoute(路由设置设置){
开关(设置.名称){
案例“/”:
返回物料路线(
生成器:()=>BlocProvider.value(
值:_counterBloc,
子:主页(),
),
);
案例“/计数器”:
返回物料路线(
生成器:()=>BlocProvider.value(
值:_counterBloc,
child:CounterPage(),
),
);
违约:
返回null;
}
}
}

明白了!颤振有一个名为
late
的新关键字,可以在没有任何样板的情况下执行此操作

类批准者{
后期最终反阵营_CounterBloc=CounterBloc();
路由onGenerateRoute(路由设置设置){
开关(设置.名称){
案例“/”:
返回物料路线(
生成器:()=>BlocProvider.value(
值:_counterBloc,
子:主页(),
),
);
案例“/计数器”:
返回物料路线(
生成器:()=>BlocProvider.value(
值:_counterBloc,
child:CounterPage(),
),
);
违约:
返回null;
}
}
}
这就是为什么我们爱弗利特


参考资料:

如果您在所有路线之间共享区块,请在您的
导航器上构建它们。
不会生成很多样板文件吗?为什么会生成样板文件?我想我需要使用类似于将其定义为null的东西,然后检查是否在每个路线上实例化null,但似乎我只能在调用时使用它的
late
声明来实例化它。为什么您需要在每个路由上实例化它?每条路线都指向同一个集团,对吗?然后将您的
Navigator
包装在
BlocProvider
中,这样每个路由都可以隐式访问它。甚至不用担心在每条路线上搞砸。