gpt4 book ai didi

dart - 将 Future> 传递到 Button 中的快照

转载 作者:IT王子 更新时间:2023-10-29 07:19:45 26 4
gpt4 key购买 nike

我正在使用 FutureBuilder有一个 ListView.builderitemCount的 3,这样它将显示三个 OutlineButton携带 String从我通过 Future<List<int>> 检索的 Firestore .该列表基本上包含三个随机生成但符合特定条件的整数。值很好。

return FutureBuilder(
future: getAllWords(args.collectionId),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 3,
itemBuilder: (context, index) {

//Future that returns a list of 3 integers
getRestRandom(args.collectionId).then(handler);
int handler(picked){
return picked;
}

return ButtonBar(
children: <Widget>[
OutlineButton(
child: Text(snapshot
.data[picked] // 1st, 2nd, and 3rd value from List
.data["tagalog"]),
onPressed: checkCorrect
? () {
setState(() {

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

线 getRestRandom(args.collectionId).then(handler);返回一个错误,指出“局部变量‘handler’在声明之前无法被引用。

将列表提供给 OutlineButton 的最佳方式是什么?文本?

最佳答案

与其使用 then 等待 getRestRandom(),不如使用嵌套的 FutureBuilder 等待列表生成,然后使用它来填充您的 ListView:

 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");
})
],
);
});
}
);
});

关于dart - 将 Future<List<int>> 传递到 Button 中的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com