将Future <list <int >>传递到Button中的快照

时间:2019-05-19 17:42:16

标签: dart flutter google-cloud-firestore

我使用的FutureBuilder的{​​{1}}的{​​{1}}为3,因此它将显示三个ListView.builder,其中包含{我通过itemCount检索到的Firestore。该列表基本上具有三个随机生成的但满足特定条件的整数。值很好。

OutlineButton

线 String返回一个错误,指出“在声明局部变量'handler'之前不能对其进行引用。

将列表填充到Future<List<int>>文本中的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的then等待列表生成,然后使用它来填充getRestRandom(),而不是使用FutureBuilder来等待ListView:< / p>

 return FutureBuilder(
    future: getAllWords(args.collectionId),
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return CircularProgressIndicator();
      }
      return FutureBuilder<List<int>>(
        future: getRestRandom(args.collectionId),
        builder: (context, numbersSnapshot){
          if (!numbersSnapshot.hasData) {
            return CircularProgressIndicator();
          }
          return ListView.builder(
              scrollDirection: Axis.horizontal,
              itemCount: 3,
              itemBuilder: (context, index) {
                return ButtonBar(
                  children: <Widget>[
                    OutlineButton(
                        child: Text(snapshot
                            .data[numbersSnapshot.data[index]] // 1st, 2nd, and 3rd value from List
                            .data["tagalog"]),
                        onPressed: checkCorrect
                            ? () {
                          setState(() {

                          });
                        }
                            : () {
                          print("FALSE");
                        })
                     ],
                  );
              });
            }
         );
      });