[英]I can't take out data from list inside future function. Flutter/Dart
我是這門語言的初學者,我不知道如何處理它。 我從這段代碼中想要的是函數 getDocs() 將從 firestore 中取出數據。 發生后,有狀態小部件將從列表中構建文本,該列表將包含來自 firestore 的數據。 錯誤很明顯,顯示我的列表是空的:錯誤來自設備
我的代碼看起來:
class TestBasic extends StatefulWidget {
int time;
int amount;
TestBasic({this.time, this.amount});
@override
_TestBasicState createState() => _TestBasicState();
}
class _TestBasicState extends State<TestBasic> {
List<Map> listOfQuestionsMap = [];
List<Question> listOfQuestions = [];
Future getDocs() async {
QuerySnapshot querySnapshot =
await Firestore.instance.collection("questions").getDocuments();
for (int i = 0; i < widget.amount; i++) {
var a = querySnapshot.documents[i];
listOfQuestionsMap.add(a.data);
}
List<Question> listOfQuestionsQ = listOfQuestionsMap.map((doc) {
return Question(
answer: doc['answer'] ?? '',
questionText: doc['questionText'] ?? '',
type: doc['type'] ?? '',
substantiation: doc['substantiation'] ?? '',
article: doc['article'] ?? ''
);
}).toList();
print(listOfQuestionsQ[1].answer);
setState(() {
listOfQuestions.addAll(listOfQuestionsQ);
});
}
@override
void initState() {
getDocs();
super.initState();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 40.0),
child: Container(
alignment: Alignment.center,
height: Responsive.height(40, context),
decoration: BoxDecoration(
border: Border.all(color: Colors.black, width: 1.0)),
child: Text(listOfQuestions[0].answer,
textAlign: TextAlign.center,
style: TextStyle(
decoration: TextDecoration.none,
color: Colors.black,
fontSize: 20.0,
)),
),
);
有問題模型:
class Question {
final String type;
final String questionText;
final String answer;
final String substantiation;
final String article;
Question({this.answer, this.questionText, this.type, this.substantiation, this.article});
}
有人可以解釋我如何獲得我想要的結果嗎?
您收到該錯誤是因為在getDocs
更新列表之前調用了build
,並且您的listOfQuestions
為空,並且您嘗試在索引 (0) 處獲取值。
嘗試使用:
Text(
listOfQuestions.isEmpty ? "Loading" : listOfQuestions[0].answer
)
這樣,當listOfQuestions
為空時, Text
顯示加載,當listOfQuestions
有數據時,它顯示listOfQuestions[0].answer
的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.