我想为每个路由器小部件重用一个 block ,但每个小部件已经有一个 block ,如何向其中插入另一个 block ?
void main() => runApp(App());
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
final _sharedBloc = SharedBloc();
final _oneBloc = OneBloc();
final _twoBloc = TwoBloc();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
routes: {
'/one': (context) => BlocProvider.value(
value: _oneBloc, // add _sharedBloc to OnePage widget.
child: OnePage(),
),
'/two': (context) => BlocProvider.value(
value: _twoBloc, // add _sharedBloc to TwoPage widget.
child: TwoPage(),
),
},
);
}
@override
void dispose() {
_counterBloc.close();
super.dispose();
}
}
最佳答案
您可以使用 MultiBlocProvider
一次向子级提供多个 BLoC,如 the flutter_bloc documentation 中所述。 ,像这样:
routes: {
'/one': (context) => MultiBlocProvider(
providers: [
BlocProvider.value(
value: _sharedBloc,
),
BlocProvider.value(
value: _oneBloc,
),
],
child: OnePage(),
),
// '/two' is similar
},
关于flutter - 如何在同名路由器小部件中使用多个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65381412/