【发布时间】:2021-08-20 23:33:00
【问题描述】:
我正在使用 Flutter 生成的路由,我想share blocs between them。
但我认为示例解决方案的扩展性可能不是最好的,因为这些块是用路由器实例化的。
有没有办法仅在用户访问该路由时实例化它们?
class AppRouter {
final _counterBloc = CounterBloc();
Route onGenerateRoute(RouteSettings settings) {
switch (settings.name) {
case '/':
return MaterialPageRoute(
builder: (_) => BlocProvider.value(
value: _counterBloc,
child: HomePage(),
),
);
case '/counter':
return MaterialPageRoute(
builder: (_) => BlocProvider.value(
value: _counterBloc,
child: CounterPage(),
),
);
default:
return null;
}
}
}
【问题讨论】:
-
如果您在所有路线之间共享区块,请将它们构建在您的
Navigator之上。 -
不会产生很多样板文件吗?
-
为什么会生成样板文件?
-
我认为我需要使用类似将其定义为 null 然后检查是否为 null 以在每条路由上实例化,但似乎我可以在其上使用
late声明仅在调用时实例化它. -
为什么需要在每条路由上都实例化它?每条路线都指向同一个集团,对吧?然后将您的
Navigator包装在BlocProvider中,这样每条路由都可以隐式访问它。甚至不用担心在每条路线的基础上弄乱它。
标签: flutter dart routes bloc flutter-bloc