问题描述
我有一个使用url从Firebase存储中获取一些信息的函数,这些信息包含一个布尔值,我想要实现的是在此JSON文件中的每个嵌套对象中循环true
值,找到真值时停止。
代码:
Future getAya() async {
await checkInternet();
await down_data();
if (khatma == 'Khatma 1') {
var rng = new Random();
int ranum = rng.nextInt(2);
var response = await http.get(
'firebase link',);
var myDataString = utf8.decode(response.bodyBytes);
data = jsonDecode(myDataString);
if (state = true) {
print('Taken');
} else {
setState(() {
ranAya = data['verse_$ranum']['Aya'];
state = data['verse_$ranum']['taken'];
audioLink = data['verse_$ranum']['audioLink'];
});
}
解决方法
您可以像这样使用do while
循环:
Future getAya() async {
bool state = false;
do{
await checkInternet();
await down_data();
if (khatma == 'Khatma 1') {
var rng = new Random();
int ranum = rng.nextInt(2);
var response = await http.get(
'firebase link',);
var myDataString = utf8.decode(response.bodyBytes);
data = jsonDecode(myDataString);
state = data['verse_$ranum']['taken'];
if (state) {
print('Taken');
} else {
setState(() {
ranAya = data['verse_$ranum']['Aya'];
audioLink = data['verse_$ranum']['audioLink'];
});
}
}
}while(!state);
}