flutter - 如何在timePicker中格式化时间

标签 flutter dart widget

我正在尝试在我的 flutter 中实现一个时间选择器,它显示如下图所示的时间。

formated time

虽然我能够像这样格式化时间,但问题是它在小部件初始化时不显示当前时间。
我试过用这个。在这里看到我的代码。

TimeOfDay _currentTime = new TimeOfDay.now();

String timeText = 'Set A Time';
Future<Null> selectTime(BuildContext context) async {
      TimeOfDay selectedTime = await showTimePicker(
        context: context,
        initialTime: _currentTime,
      );

      MaterialLocalizations localizations = MaterialLocalizations.of(context);
      String formattedTime = localizations.formatTimeOfDay(selectedTime,
          alwaysUse24HourFormat: false);

      if (formattedTime != null) {
        setState(() {
          timeText = formattedTime;
        });
      }
    };

Widget Date picker


class DatePicker extends StatelessWidget {
  DatePicker({
    this.formatedDate,
    this.selectedDate,
  });

  final String formatedDate;
  final Function selectedDate;

  @override
  Widget build(BuildContext context) {
    return FlatButton(
      padding: EdgeInsets.only(top: 30.0, bottom: 10.0),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisAlignment: MainAxisAlignment.start,
        children: <Widget>[
          Icon(
            Icons.calendar_today,
            color: Color(kBorderTileColor),
          ),
          SizedBox(
            width: 50.0,
          ),
          Text(
            '$formatedDate',
            style: kInputTextStyle,
          ),
          SizedBox(
            width: 50.0,
          ),
          Text(
            'All Day',
            style: TextStyle(color: Color(kBorderTileColor)),
          ),
        ],
      ),
      onPressed: () {
        selectedDate(context);
      },
    );
  }
}

最佳答案

试试这个源代码。

  TimeOfDay _currentTime = new TimeOfDay.now();
  String timeText = 'Set A Time';


  Future<Null> selectTime(BuildContext context) async {
    TimeOfDay selectedTime = await showTimePicker(
      context: context,
      initialTime: _currentTime,
    );

    MaterialLocalizations localizations = MaterialLocalizations.of(context);
    if (selectedTime != null) {
      String formattedTime = localizations.formatTimeOfDay(selectedTime,
          alwaysUse24HourFormat: false);
      if (formattedTime != null) {
        setState(() {
          timeText = formattedTime;
        });
      }
    }
  }

 void setCurrentTime(){
    TimeOfDay selectedTime=new TimeOfDay.now();
      MaterialLocalizations localizations = MaterialLocalizations.of(context);
      String formattedTime = localizations.formatTimeOfDay(selectedTime,
          alwaysUse24HourFormat: false);
      if (formattedTime != null) {
        setState(() {
          timeText = formattedTime;
        });
      }
  }

build(BuildContext context) 中调用此函数
 Widget build(BuildContext context) {
    setCurrentTime();
    ...
  }

关于flutter - 如何在timePicker中格式化时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417290/

相关文章:

ios - iOS 中是否有 INTERNET 权限?

android - 如何减少 flutter 中的视频录制大小?

flutter - 在谷歌游戏控制台上使用正确的 key 签名但仍然是错误的 key 错误

firebase - Firestore添加条件以仅读取最新数据

android - Android 应用程序中的日历以选择月份和年份

asynchronous - 如何从 future 获取列表并在 listView 中使用它

android - 如何在抖动中显示横向和纵向的不同布局

user-interface - getter在flutter中的null上调用会显示错误屏幕

html - 无法使用 CSS 格式化第 3 方小部件

gwt - GWT 有段落小部件吗?