Flutter自动更新时间(日期,星期以及具体时间点,不需要导入第三方库)

1,831 阅读1分钟

---直接用 timer

主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green, vue-pro

贡献主题:github.com/xitu/juejin…

theme: juejin highlight:

Flutter 获取当前日期

  • dateTime.day 今天多少号
  • dateTime.month 当前月份
  • dateTime.year
  • dateTime.hour
  • dateTime.minute
  • dateTime.second
  • dateTime.millisecond
  • dateTime.millisecondSinceEpoch

具体代码

import 'dart:async';

import 'package:flutter/material.dart';

class KmTimer extends StatefulWidget {

  @override
  State<KmTimer> createState() => _KmTimerState();

  void cancel() {}

}

class _KmTimerState extends State<KmTimer> {
  //时间日期开始
  Timer _timer;
  DateTime dateTime;

  @override
  void initState() {
    super.initState();
    dateTime = new DateTime.now();
    this._timer = new Timer.periodic(Duration (seconds: 1), setTime);
  }
    void setTime(Timer timer) {
      setState(() {
        dateTime = new DateTime.now();
      });
    }

  @override
  void dispose() {
    _timer.cancel();
    super.dispose();
  }

  var weekday = [" ","星期一","星期二","星期三","星期四","星期五","星期六","星期日"];
  // 时间日期结束

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: new Container(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Padding(
                padding: EdgeInsets.only(top: 200)
              ),
              Text(
                "${dateTime.hour}:${dateTime.minute.toString().padLeft(2,'0')}:${dateTime.second.toString().padLeft(2,'0')}",
                style: TextStyle(
                  color: Colors.black,
                  fontSize: 18
                ),
              ),
              Padding(
                  padding: EdgeInsets.only(left: 20)
              ),
              Text(
                "${weekday[dateTime.weekday]}",
                style: TextStyle(
                  color: Colors.black,
                  fontSize: 18
                ),
              ),
              Padding(
                  padding: EdgeInsets.only(left: 20)
              ),
              Text(
                "${dateTime.year}/${dateTime.month}/${dateTime.day}",
                style: TextStyle(
                  color: Colors.black,
                  fontSize: 18
                ),
              )
            ],
          ),
      ),
    );
  }
}

运行结果