1

我有一个使用url从firebase存储中获取一些信息的函数,这些信息包含一个布尔值,我想要实现的是true在这个JSON文件中的每个嵌套对象中循环一个值,并在它找到一个真实值时停止。

代码:

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'];
        });
      }
4

1 回答 1

1

您可以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);
}
于 2020-09-24T06:15:45.327 回答