#flutter #flutter-bloc
#flutter #flutter-bloc
Вопрос:
Я хочу повторно использовать один блок для каждого виджета маршрутизатора, но у каждого виджета уже есть блок, как вставить в него другой блок?
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();
}
}
Ответ №1:
Вы можете использовать MultiBlocProvider
для одновременного предоставления дочернему элементу нескольких блоков, как указано в документации flutter_bloc, например:
routes: {
'/one': (context) => MultiBlocProvider(
providers: [
BlocProvider.value(
value: _sharedBloc,
),
BlocProvider.value(
value: _oneBloc,
),
],
child: OnePage(),
),
// '/two' is similar
},