首页 > 解决方案 > 当用户在 Flutter 中选择日期时如何获取日期列表

问题描述

我想在用户选择日期时显示日期列表。

Container(
                  padding: EdgeInsets.symmetric(horizontal: 10, vertical: 0),
                  decoration: BoxDecoration(
                      border: Border.all(
                          width: 1.5,
                          color: Color(0xFF5c77e0),
                          style: BorderStyle.solid),
                      borderRadius: BorderRadius.circular(3)),

                  // dropdown below..
                  child: DropdownButton<String>(
                      isExpanded: true,
                      value: dropdownValue,
                      icon: Icon(Icons.keyboard_arrow_down),
                      iconSize: 30,
                      underline: SizedBox(),
                      onChanged: (String newValue) {
                        setState(() {
                          dropdownValue = newValue;
                        });
                      },
                      items: <String>[
                        '1',
                        '2',
                        '3',
                        '4',
                        '5',
                        '6',
                        '7',
                        '8',
                        '9',
                        '10',
                      ].map<DropdownMenuItem<String>>((String value) {
                        return DropdownMenuItem<String>(
                          value: value,
                          child: Text(value),
                        );
                      }).toList()),
                ),

假设用户选择了 5 天。我想显示从当前日期开始的前 5 天的日期,例如今天的日期是“21-03-2020”。如果用户选择了 5 天,则列表应如下所示:

17-03-2020
18-03-2020
19-03-2020
20-03-2020
21-03-2020

我怎样才能做到这一点?

标签: flutter

解决方案


假设您的输入是一个数字字符串值。


List<String> getDates(String dateCount){
  List<String> dates=[];
  var yourDateCountValue=int.parse(dateCount);
  var dateToday=DateTime.now();
  while(yourDateCountValue!=0){
    //Print Full date
    print(dateToday.subtract(Duration(days: yourDateCountValue-1)));
    //Print Date Exactly of your format
    print(dateToday.subtract(Duration(days: yourDateCountValue-1)).toIso8601String().substring(0,10));
    //Add dates to the list being started from 5 days back.
    dates.add(dateToday.subtract(Duration(days: yourDateCountValue-1)).toIso8601String().substring(0,10));
    yourDateCountValue--;
  }
  return dates;
}

将您的方法称为

getDates("5");

推荐阅读