You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何遍历双列表实现每日多时段提醒创建?

解决Flutter中为每个选中日期创建多时段饮水提醒的问题

问题分析

你之前的代码用同一索引同时遍历日期列表和时间列表,只会让第N个日期对应第N个时间,无法实现「每个日期匹配所有时段」的需求,甚至可能因两个列表长度不一致触发索引越界异常。

正确实现代码

要实现每个选中日期对应所有提醒时段,需使用嵌套循环:外层遍历选中的日期,内层遍历所有提醒时间,为每一组「日期+时间」创建提醒:

if (notificationDays.isNotEmpty && remindertime.isNotEmpty) {
  // 外层循环:遍历每一个选中的日期
  for (var dayStr in selectedNotificationDays) {
    int dayOfWeek = int.parse(dayStr);
    // 内层循环:遍历每一个提醒时间
    for (var time in remindertime) {
      createWaterReminderNotification(
        'Reminder',
        NotificationWeekAndTime(
          dayOfTheWeek: dayOfWeek,
          timeOfDay: time,
        ),
      );
    }
  }
}

代码说明

  • 新增remindertime.isNotEmpty判断,避免空列表遍历的无效操作
  • 外层用for-in循环遍历日期列表,代码更简洁易读
  • 内层遍历所有提醒时间,为当前日期的每一个时间点创建独立提醒
  • 提前解析日期字符串为整数,避免循环内重复解析,提升性能

额外优化建议

  • 若需避免重复创建相同的「日期+时间」提醒,可先用Set存储已创建的组合做去重判断
  • 可添加错误捕获逻辑,防止int.parse(dayStr)因字符串格式错误抛出异常

内容的提问来源于stack exchange,提问作者Mat Koffman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:50:42