如何在Flutter CupertinoDatePicker中设置时间选择器的初始时间?

eni9jsuy  于 2023-04-07  发布在  Flutter
关注(0)|答案(2)|浏览(241)

在我的CupertinoDatePickerMode.time中,我需要滑动选择器来设置onDateTimeChanged选择器上当前的时间。我点击按钮,选择器弹出。我可以设置时间,就像我说的那样,只有在滑动选择器之后。

***所以我的问题是:***我如何设置时间时,只有选择器弹出。

这是我的变量:

DateTime? selectedDayStart;

这是我的picker:

return CupertinoDatePicker(
    mode: CupertinoDatePickerMode.time,
    minuteInterval: 15,
    initialDateTime: _initialTime,
    use24hFormat: true,
    onDateTimeChanged: (time) {
      setState(() {
        selectedDayStart = DateTime(
            selectedDayStart!.year,
            selectedDayStart!.month,
            selectedDayStart!.day,
            time.hour,
            time.minute);
      });
    },
  );

这是我如何显示时间:

Text(
  "Başlangıç Saati ${DateFormat("HH:mm").format(selectedDayStart!)}",
  style: const TextStyle(fontSize: 20),
)
6yt4nkrj

6yt4nkrj1#

您可以在initialDateTime上设置时间。

DateTime _initialTime = DateTime.now().copyWith(
  hour: 11,
  minute: 40,
);
CupertinoDatePicker(
  mode: CupertinoDatePickerMode.time,
  minuteInterval: 10,
  initialDateTime: _initialTime,

minuteInterval应为_initialTime.minute%minuteInterval==0。请确保填充此(%==0)条件。

bfrts1fy

bfrts1fy2#

我通过在Stateful Widget中使用CupertinoDatePicker并调用initState解决了这个问题

class MyCupertinoDatePicker extends StatefulWidget {
  const MyCupertinoDatePicker({Key? key}) : super(key: key);

  @override
  _MyCupertinoDatePickerState createState() => _MyCupertinoDatePickerState();
}

class _MyCupertinoDatePickerState extends State<MyCupertinoDatePicker> {
  @override
  void initState() {
    super.initState();
    // set the initial date to the current date and time
    selectedDate = DateTime.now();
    print(selectedDate);
  }

  @override
  Widget build(BuildContext context) {
    return CupertinoDatePicker(
      mode: CupertinoDatePickerMode.time,
      initialDateTime: selectedDate,
      onDateTimeChanged: (DateTime newDateTime) {
        setState(() {
          selectedDate = newDateTime;
          print(selectedDate);
          
        });
      },
    );
  }
}

相关问题