使用Flutter和Dart时,页面跳转后String变量为何仅保留最后一个值?
解决Flutter中页面跳转后日期变量仅保留最后一个值的问题
问题根源
你当前在appController中定义的mydate是单个字符串变量,每次赋值操作都会覆盖之前存储的内容,因此跳转至第二个页面时只能获取最后一次赋值的日期。
解决方案
将单个变量改为列表类型,用于存储所有日期值:
修改Controller中的变量定义
在appController里把单个字符串变量替换为字符串列表:// 替换原来的 String mydate; List<String> myDates = [];第一个页面中添加日期到列表
不再直接赋值,而是将格式化后的日期添加到列表中,同时避免重复解析DateTime以提升效率:// 解析并格式化日期 DateTime localDateTime = DateTime.parse(info.timestamp).toLocal(); String formattedDate = "${localDateTime.year}-${localDateTime.month.toString().padLeft(2, '0')}-${localDateTime.day.toString().padLeft(2, '0')} ${localDateTime.hour.toString().padLeft(2, '0')}:${localDateTime.minute.toString().padLeft(2, '0')}"; // 添加到列表 appController.myDates.add(formattedDate); // 打印所有日期 print(appController.myDates);此时控制台会输出所有已添加的日期列表。
第二个页面中获取所有日期
直接打印整个列表即可获取所有日期值:print(widget.appController.myDates);
内容的提问来源于stack exchange,提问作者Bill Tertis
相关产品推荐
相关产品推荐

