【问题标题】:flutter : api date show in date picker颤振:日期选择器中的 api 日期显示
【发布时间】:2021-12-27 15:00:28
【问题描述】:

我从 api 获取时间,并存储在“timeSlotData”变量中。 我想在下面提到的这个 UI 中显示 api 数据。

我想显示从 api 获取的时间我想在 ui 中显示的 api 时间。

dynamic timeSlotData ;
  timeSlotUsingIdAndDate(String id, String date){
    apiManager.timeSlotByIdAndDate(id,date).then((value){
      timeSlotData.add(value);
      print(timeSlotData[0].data!.timeSlots!.toString());
      var a=DateTime.parse(timeSlotData[0].data!.timeSlots![0].slotTiming.toString()).toString();

//Here I Convert api time into DateTime 

      DateTime date=DateTime.parse(timeSlotData[0].data!.timeSlots![1].slotTiming.toString());
      var mm=date.month;
      print(mm);
      var yy=date.year;
      print(yy);
      var hh=date.minute;
      print(hh);
      print("a"+a);
    });
  }

这是我的ui部分编码

 CupertinoDatePicker(
                    backgroundColor: Colors.transparent,
                    use24hFormat: false,
                    mode:CupertinoDatePickerMode.time,
                    initialDateTime: initialDate,
                    minuteInterval: 30,
                    onDateTimeChanged: (DateTime selected) {
                      // do what you need
                      print(selected.hour);
                      print(selected.minute);

                    }),

【问题讨论】:

  • 您的问题是如何插入初始时间?
  • @YeasinSheikh 是的
  • 你的解析器工作正常吗?
  • @YeasinSheikh DateTime.parse(timeSlotData[0].data!.timeSlots.toString());我从 api 获得了所有数据,然后打印了 mm,我得到了我的分钟数

标签: flutter dart flutter-layout flutter-animation flutter-test


【解决方案1】:

在状态类上创建一个可为空的DateTime,用于保存选定的Datetime

DateTime? selectedDateTime;

并调用此方法,


  _openPicker(BuildContext context) {
    () async {
      /// do your perser

      /// set your intial date from parser, in your case it is `date`
      final initalDate = DateTime(
        2011,
      );

      await showDialog(
        context: context,
        builder: (context) => AlertDialog(
          title: Text("Selected Time"),
          content: CupertinoDatePicker(
              backgroundColor: Colors.transparent,
              use24hFormat: false,
              mode: CupertinoDatePickerMode.time,
              initialDateTime: initalDate,
              minuteInterval: 30,
              onDateTimeChanged: (DateTime selected) {
                print(selected.hour);
                print(selected.minute);

                setState(() {
                  selectedDateTime = selected;
                });
              }),
          actions: [
            OutlinedButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text("close"),
            ),
          ],
        ),
      );
    };
  }

【讨论】:

  • 但是我从 api 得到了多次,所以如何显示我得到的时间
  • 会有一个initialDateTimeCupertinoDatePicker 需要一个初始日期
  • YeasinSheikh 听着,假设我从 api 获得的时间是 3、5、7 分钟,比如 40、20、30,这一次我想在 UI 中显示就是这样。而且我知道它需要一个初始日期,但我的问题是 UI。你明白了吗???
  • YeasinSheikh 请帮帮我
  • 你用DateTime.now().add(Duration(hours: ,minutes: ));现在解决了吗。 DateTime.now() 将是您从 api 获取的日期,然后添加
猜你喜欢
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多