Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何对颤振中列表的每个索引迭代此函数?_Flutter - Fatal编程技术网

Flutter 如何对颤振中列表的每个索引迭代此函数?

Flutter 如何对颤振中列表的每个索引迭代此函数?,flutter,Flutter,我有一个复杂的解决方案,可以从列表中提取日期和小时,并在正则表达式中添加日期和小时,以找到关联的值,并将所有内容保存在SharedReference中。如果我手动关注输入列表的一个特定索引,这是可行的 但我的问题是,我不知道如何为输入列表[]的每个索引迭代代码 我输入了日期和时间的列表 [2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10] match_date = 2020-09-05 match_hour = 08 我选择第一个索引[1]

我有一个复杂的解决方案,可以从列表中提取日期和小时,并在正则表达式中添加日期和小时,以找到关联的值,并将所有内容保存在SharedReference中。如果我手动关注输入列表的一个特定索引,这是可行的

但我的问题是,我不知道如何为输入列表[]的每个索引迭代代码

我输入了日期和时间的列表

[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
我选择第一个索引[1]=>
2020-09-05 10:00

我用正则表达式提取日期和时间

[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
使用正则表达式,我在另一个文件中搜索与日期和小时相关的值

[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
现在我有了日期小时和值,我可以将其保存在SharedReference键(日期,小时)值(找到的值)中

但是这种方法只适用于确定的索引,这里是索引[1],但是如果我有n个索引,我想做这个函数n次

我试试这个

for (var i = 0; i < MyList.length; i++) {

 List<String> MyList ;  

    MyList= prefs.getStringList("save_list"); // load list  [2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
      final MylistasMap = MyList.asMap(); //convert list in map 

      RegExp regExp1 = new RegExp(
        r'(\d{4}-\d{2}-\d{2})',);    
      var match_date = regExp1.firstMatch(MylistasMap[i]);  // match only date format XXXX-XX-XX of index[1] of MyList [2020-09-05,2020-09-06,2020-09-07]
      if(match_date!=null ) {
        var date = match_date.group(1);

        RegExp regExp2 = new RegExp(
          r'(\d*):',                        
        );
        var match_hour = regExp2.firstMatch(MylistasMap[i]);  // match only hour of index[1]

        if (match_hour != null) {

          var hour = match_hour.group(1);

          RegExp regExp3 = new RegExp(
            r'((?<='+date+',conso_h'+hour+':)[1-9]\S[^"]*)',  // match double value in other_file, saved with specific date, hour found previously in the list
          );
          var match_value = regExp3.firstMatch("$other_file");  // other_file is a String with all date and value saved

          if (match_value != null) {

            var value_conso = match_value.group(1);
            double val_double_value_conso = double.parse(value_conso);
            prefs.setDouble('$date,conso_h$hour', val_double_value_conso);
          }

        }
      }

}
for(变量i=0;ir'((?我编写了一个程序,它将遍历所有列表项并打印日期和小时:

我删除了
otherFile
语句,因为我不知道另一个文件中有什么,但您可以继续添加另一个文件并传递其他文件

myList.forEach((element) {

    RegExp regExp1 = new RegExp(
      r'(\d{4}-\d{2}-\d{2})',
    );
    var match_date = regExp1.firstMatch(
        element); // match only date format XXXX-XX-XX of index[1] of MyList [2020-09-05,2020-09-06,2020-09-07]
    if (match_date != null) {
      var date = match_date.group(1);

      RegExp regExp2 = new RegExp(
        r'(\d*):',
      );
      print('Date: $date');
      var match_hour =
          regExp2.firstMatch(element); // match only hour of index[1]

      if (match_hour != null) {
        var hour = match_hour.group(1);
print('Hours: $hour');
        RegExp regExp3 = new RegExp(
          r'((?<=' +
              date +
              ',conso_h' +
              hour +
              ':)[1-9]\S[^"]*)', // match double value in other_file, saved with specific date, hour found previously in the list
        );
      }
    }
  });

一个for循环来迭代列表中的每一项应该是有效的不?基本上是将代码包装在for循环中…(即,对于每个元素都是list do…)当然^^^我不知道如何在我的例子中正确编写它,但是的,我认为这是类似于我“只”需要迭代MyListMap[1 2 3…n]对于Mylistwrap的每个索引,使用
MyList.forEach((element){your RegExp statements})中的语句;
然后使用计时器函数调用n time wrap