如何在flutter中使用showTimePicker作为Widget?

rah*_*aha 6 datetimepicker flutter

我希望用户选择日期和时间,因为有日期时间选择器对话框。

但是,有没有一种方法可以让我在某些颤动小部件上持续显示日期时间并像任何其他小部件一样使用?

Container(
   child: showTimePicker(
          context: context,
          initialTime: TimeOfDay.now(),
          builder: (BuildContext context, Widget child) {
            return Theme(
              data: ThemeData.dark(),
              child: child,
            );
          },
        );
}
Run Code Online (Sandbox Code Playgroud)

但我不能showTimePicker用作小部件。

如何showTimePicker()用作小部件?以便其他小部件可以构建在它之上。

Mit*_*ari 5

我前段时间遇到了像你一样的问题,我复制了源代码并制作了我的自定义小部件。现在,它可以像任何小部件一样使用。如果您想采用这一点,我想提几件事。

  1. 我不确定这是否适用于本地化,我没有测试过。
  2. 我不确定这是否适用于浅色主题以外的其他主题,我只在浅色主题上进行了测试。

您可以在这里找到代码。 https://gist.github.com/mithunadhikari40/b55b9990ebc15d0d8bf70fd3f87709b0

用法:从上面的链接复制代码,创建一个dart文件,粘贴代码并像这样使用它:

                     SizedBox(
                        child: TimePickerDialog(
                        initialTime: TimeOfDay.fromDateTime(DateTime.now()),
                        onTimeChange: (TimeOfDay time) {
                          print(
                              "What we get the value of the time is now $time");
                        },
                      ),
                    ),
Run Code Online (Sandbox Code Playgroud)


Dha*_*ara 3

您必须showTimePicker单击任何小部件才能打开。因此,您可以简单地将代码放在showTimePickeronTap 属性内,GestureDetector如下所示。

GestureDetector(
    onTap: () async {
        TimeOfDay picked = await showTimePicker(
        context: context,
        initialTime: TimeOfDay.now(),
        builder: (BuildContext context, Widget child) {
           return MediaQuery(
           data: MediaQuery.of(context)
           .copyWith(alwaysUse24HourFormat: true),
           child: child,
           );
        },);
     },
     child: Text("SetTime",textAlign: TextAlign.center,));
Run Code Online (Sandbox Code Playgroud)