【问题标题】:How to make a loop for a function until a bool is true?如何为函数创建一个循环,直到布尔为真?
【发布时间】:2021-01-10 08:58:11
【问题描述】:

我有一个函数,它使用 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'];
        });
      }

【问题讨论】:

  • if (state = true) 应该是if (state == true)
  • 但它工作正常吗?
  • 它总是会成功,因为您将true 分配给state 而不是比较truestate
  • 好的,但是这个问题呢?
  • 我不是颤振专家,但您似乎缺少某种循环结构......

标签: json loops flutter firebase-storage nested-object


【解决方案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);
}

【讨论】:

  • 这是否意味着如果 state = false 它将在 do 括号中执行什么操作?
  • 如何循环直到找到一个等于 false 的状态,因为我有很多嵌套对象。
  • 我想重复这个函数,直到我得到一个 state = false
  • 是的 while(!state) 为你做这件事。它会重复您的代码块,直到 state 变为真。如果你想要相反的设置它为while(state)@FlutterDeveloper1
  • while 语句中检查您的情况。在这里您可以阅读有关此类循环的更多信息:tutorialspoint.com/dart_programming/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 2013-12-05
  • 2022-11-30
  • 2017-06-23
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多