flutter - 如何在同名路由器小部件中使用多个 block

标签 flutter flutter-bloc

我想为每个路由器小部件重用一个 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/

相关文章:

FlutterBloc 对 Blocs 的初始状态使用react

flutter_block : BlockProvider vs. RepositoryProvider

flutter - Flutter-如何为Bloc设置double值?

flutter - 异步功能完成后如何推送到页面?

firebase - "Cloud Firestore Override a deprecated API "构建flutter应用程序出错

flutter - 带Cubit的DropDownButton

Flutter Bloc 使用 Timer 重新获取数据

Flutter:如何在 DatePicker 中仅启用某些日期

dart - 在Flutter中用省略号显示段落

listview - flutter 中非动态容器小部件的水平传送带