如何在布尔值成立之前使函数循环?

问题描述

我有一个使用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);
}