Dart 在一个StreamBuilder中使用两个不同的流

Dart 在一个StreamBuilder中使用两个不同的流,dart,flutter,stream,bloc,Dart,Flutter,Stream,Bloc,在一个流生成器中使用2个不同的流这是可能的还是我应该如何解决这个问题 我试着用一个流来处理这两个问题,但是主题数据的行为子对象是主题数据模型,而语言流是字符串,但没有成功 child: StreamBuilder<String>( stream: translationsBloc.languageOutStream, // stream: themeBloc.outFirestore, child:StreamBuilder( stream:transla

在一个流生成器中使用2个不同的流这是可能的还是我应该如何解决这个问题

我试着用一个流来处理这两个问题,但是主题数据的行为子对象是主题数据模型,而语言流是字符串,但没有成功

child: StreamBuilder<String>(
        stream: translationsBloc.languageOutStream,
//      stream: themeBloc.outFirestore,
child:StreamBuilder(
stream:translationsBloc.languageOutStream,
//溪流:themeBloc.outFirestore,
这些是我想要使用的流

这些集团看起来是这样的:

 final _themeSubject = BehaviorSubject<ThemeData>();
  Stream<ThemeData> get outTheme => _themeSubject.stream;
Widget build(BuildContext context) {
  return StreamBuilder<String>(
      stream: translationsBloc.languageOutStream,
      builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
        return StreamBuilder<ThemeData>(
            stream: themeBloc.outFirestore,
            builder: (BuildContext context, AsyncSnapshot<ThemeData> snapshot) {
              return Container();
            });
      });
}
final _themessubject=BehaviorSubject();
Stream get outTheme=>\u themeSubject.Stream;
另一个像这样

BehaviorSubject<String> _languageController = BehaviorSubject<String>();
  Stream<String> get languageOutStream => _languageController;
BehaviorSubject\u languageController=BehaviorSubject();
Stream get languageOutStream=>\u languageController;

我需要两个流都出现在主页中,因为它会影响整个应用程序。

您可以使用布尔变量
isThisStreamRequired
进行管理。根据您的条件设置
isThisStreamRequired
的状态

child: StreamBuilder<String>(
        stream: isThisRequired?translationsBloc.languageOutStream:themeBloc.outFirestore,
child:StreamBuilder(
stream:Isthis Required?translationsBloc.languageOutStream:themeBloc.outFirestore,

我想最好的方法应该是嵌套的
StreamBuilders
。这并不少见,而且实际上经常使用

当然,您可能只会加载一次内部流
快照。第一个流的数据
为真,但这取决于您的应用程序。如果您提供更多代码,我将帮助您完成这项工作。但基本结构可能最终如下所示:

 final _themeSubject = BehaviorSubject<ThemeData>();
  Stream<ThemeData> get outTheme => _themeSubject.stream;
Widget build(BuildContext context) {
  return StreamBuilder<String>(
      stream: translationsBloc.languageOutStream,
      builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
        return StreamBuilder<ThemeData>(
            stream: themeBloc.outFirestore,
            builder: (BuildContext context, AsyncSnapshot<ThemeData> snapshot) {
              return Container();
            });
      });
}
小部件构建(构建上下文){
返回流生成器(
stream:translationsBloc.languageOutStream,
生成器:(BuildContext上下文,异步快照){
返回流生成器(
溪流:themeBloc.outFirestore,
生成器:(BuildContext上下文,异步快照){
返回容器();
});
});
}