首页 > 解决方案 > 如何基于两个 Firestore 集合构建 Flutter 小部件

问题描述

我在 Firestore 中有两个集合:

事件:
标题
coachId

教练:
姓名

我用 StreamBuilder 制作了一个显示事件的小部件“EventsPage”。现在我需要这个小部件来显示每个事件的教练姓名——比如 coaches[event['coachId']['name']。如何在构建“EventsPage”小部件之前获取“教练”集合?

标签: fluttergoogle-cloud-firestore

解决方案


你可以使用嵌套StreamBuilder

Widget nestedStreamBuilders() {
  return StreamBuilder(
    stream: firstStream,
    builder: (BuildContext context, AsyncSnapshot snapshot) {
      if (snapshot.hasError) return Text('Error: ${snapshot.error}');
      switch (snapshot.connectionState) {
        case ConnectionState.none:
          return Text('Select lot');
        case ConnectionState.waiting:
          return Text('Awaiting bids...');
        case ConnectionState.active:
        case ConnectionState.done:
          return StreamBuilder(
            stream: secondStream,
            builder: (BuildContext context, AsyncSnapshot secondSnapshot) {
              if (secondSnapshot.hasError)
                return Text('Error: ${secondSnapshot.error}');
              switch (secondSnapshot.connectionState) {
                case ConnectionState.none:
                  return Text('Select lot');
                case ConnectionState.waiting:
                  return Text('Awaiting bids...');
                case ConnectionState.active:
                case ConnectionState.done:
                  return BuildYourWidgetHere();
                  // you can build your widget here because we have the both data 
              return null; // unreachable
            },
          );
      }
      return null; // unreachable
    },
  );
}

如果您需要FutureBuilder这是示例:FutureBuilder_Example


推荐阅读