【问题标题】:How to stop/break forEach loop in dart /flutter?如何在 dart /flutter 中停止/中断 forEach 循环?
【发布时间】:2020-06-16 20:51:09
【问题描述】:

我想在 for 循环执行完成后中断 forEach 循环。

  void main() {
      var id = [1, 2, 3, 4, 5];


      id.asMap().forEach((index, number) {
        print('ForEach loop');

        for (int i = 0; i < 1; i++) {
          print("for loop");
        }
      });
    }

【问题讨论】:

标签: loops flutter dart foreach


【解决方案1】:

不能用 Dart 破坏 forEach

您可以使用forindexOf

  for (var number in id) {
    var index = id.indexOf(number);

    print('Origin forEach loop');

    for (int i = 0; i < 1; i++) {
      print("for loop");
    }

    break;
  }

【讨论】:

    【解决方案2】:

    我认为这会对您有所帮助。使用标签打破循环。

     void main() { 
     outerloop: // This is the label name 
    
       for (var i = 0; i < 5; i++) { 
       print("Innerloop: ${i}"); 
       innerloop: 
    
      for (var j = 0; j < 5; j++) { 
         if (j > 3 ) break ; 
    
         // Quit the innermost loop 
         if (i == 2) break innerloop; 
    
         // Do the same thing 
         if (i == 4) break outerloop; 
    
         // Quit the outer loop 
         print("Innerloop: ${j}"); 
       } 
     } 
    }
    

    【讨论】:

    • 我想打破 forEach 循环而不是 for 循环。
    • @GaganSailor,用于你想使用的用例......基本上做同样的事情......关于性能的idk
    【解决方案3】:

    根据您的情况,我认为这应该可行,

    for(int i = 0; i < id.asMap().length; i++){
      if(id.asMap()[i] == 4) //your condition
      {
         break;
      }
      // your for loop
    }
    

    【讨论】:

      【解决方案4】:

      我不认为,你可以停止foreach

      使用for:

      var id = [1, 2, 3, 4, 5];
      
        for (int i in id) {
          if(i == 2)
            break;
      
          print('$i');
        }
      

      【讨论】:

      • 有什么方法可以绕过 ForEach 循环??
      【解决方案5】:

      设置一个布尔值来跟踪何时运行 foreach 主体或何时不运行而不是打破

      void main() {
            var id = [1, 2, 3, 4, 5];
            bool forEachDone=false;
      
            id.asMap().forEach((index, number) {
              //forEachDone=false;
              print('ForEach loop');
             if(!forEachDone){
              for (int i = 0; i < 1; i++,forEachDone=true) {
                print("for loop");
              }
      
             }
            });
          }
      

      【讨论】:

      • 这不会破坏 ForEach 循环。
      • 你不能中断,但你可以停止执行。
      【解决方案6】:

      你可以在flutter中使用return(0);而不是break;

      【讨论】:

      • 你能举个例子edit吗?
      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多