Flutter 是';在一个小部件中可以有多个StreamBuilder吗?

Flutter 是';在一个小部件中可以有多个StreamBuilder吗?,flutter,Flutter,是否可以在一个小部件中包含多个StreamBuilder 我得到了以下信息: class BuilderLoading extends StatelessWidget { @override Widget build(BuildContext context) { TenderApiProvider apiProv = Provider.of<TenderApiProvider>(context); // apiProv.getToken();

是否可以在一个小部件中包含多个
StreamBuilder

我得到了以下信息:

class BuilderLoading extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    TenderApiProvider apiProv = Provider.of<TenderApiProvider>(context);
    // apiProv.getToken();    
    return StreamBuilder<ApiKeyLoadingState>(
        stream: apiProv.streamApiKeyController.stream, // here
        builder: (BuildContext context, AsyncSnapshot<ApiKeyLoadingState> snapshot)
        {
          switch (apiProv.apiKeyLoadingState) {               
            case ApiKeyLoadingState.Progress:
                return Text("Retreiving key");
            case ApiKeyLoadingState.Done:
                return HomePage();
            case ApiKeyLoadingState.Error:
                return Text("Key Got Error");
              break;
            default:
              return Text("Unknown");
          }

        }

    );

  }
}
要获取列表,请执行以下操作:

检索键


RegionsLoading

您可以像这样嵌套
StreamBuilder
,只需将另一个
StreamBuilder
与第一个构建器中的第二个流一起返回即可:

类构建器加载扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
TenderApiProvider apiProv=提供者.of(上下文);
//apiProv.getToken();
返回流生成器(
stream:apiProv.streamApiKeyController.stream,//此处
生成器:(BuildContext上下文,AsyncSnapshot apiKeySnapshot)
{
返回流生成器(
stream:StreamRegionLoadingController,
生成器:(BuildContext上下文,AsyncSnaptshot regioSnapshot)
{
如果(!regioSnapshot.hasData)返回文本(“Regiodata未加载”);
开关(apiProv.apiKeyLoadingState){
案例ApiKeyLoadingState.进度:
返回文本(“检索键”);
案例ApiKeyLoadingState.Done:
返回主页();
案例ApiKeyLoadingState。错误:
返回文本(“Key-get-Error”);
违约:
返回文本(“未知”);
}
} 
);
}
);
}
}

当然,您需要在内部构建器中定义自己的自定义逻辑,我刚刚添加了一些“虚拟”逻辑以供演示。

u可以嵌套StreamBuilder:

类构建器加载扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
TenderApiProvider apiProv=提供者.of(上下文);
//apiProv.getToken();
返回流生成器(
流:apiProv.streamApiKeyController.stream,
生成器:(BuildContext上下文,AsyncSnapshotApikey){
返回流生成器(
stream:StreamRegionLoadingController,
生成器:(构建上下文上下文,异步快照快照区域加载)
{ 
///在这里做事
}
);
}
);
}
}
return (
builder: (BuildContext context, AsyncSnapshot<ApiKeyLoadingState> snapshot)
{
   // ... streamApiKeyController

}

builder: (BuildContext context, AsyncSnapshot<regionsLoadingState> snapshot)
{
   // ... streamRegionsLoadingController
}
);