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
}
);