import 'package:flutter/material.dart';
import 'dart:async';
void main() => runApp(TimerApp());
class TimerApp extends StatefulWidget {
@override
_TimerAppState createState() => _TimerAppState();
}
class _TimerAppState extends State<TimerApp> {
//类级别的常量用 static const const关键字不只是声明常数变量。您也可以使用它来创建常量值
static const duration = const Duration(seconds: 1);
int secondsPassed = 0;
bool isActive = false;
Timer timer;
void handleTick() {
if (isActive) {
setState(() {
secondsPassed = secondsPassed + 1; //需要更新UI
});
}
}
@override
Widget build(BuildContext context) {
if(timer == null){
timer = Timer.periodic(duration, (Timer t){
handleTick();
});
}
// ~/ 取整操作
int seconds = secondsPassed % 60;
int minutes = secondsPassed ~/ 60;
int hours = secondsPassed ~/ (60 * 60);
return MaterialApp(
title: 'Welcome to flutter',
home: Scaffold(
appBar: AppBar(
title: Text('Timer'),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CustomTextContainer(
label: 'HRS',value: hours.toString().padLeft(2,'0'),//padLeft 补占位符
),
CustomTextContainer(
label: 'MIN',value: minutes.toString().padLeft(2,'0'),
),
CustomTextContainer(
label: 'SEC',value: seconds.toString().padLeft(2,'0'),
)
],
),
Container(
margin: EdgeInsets.only(top: 20),
child: RaisedButton(
child: Text(isActive ? 'STOP' : 'START'),
onPressed: (){
setState(() {
isActive = !isActive;
});
}),
)
],
),
),
),
);
}
}
class CustomTextContainer extends StatelessWidget {
final String label;
final String value;
CustomTextContainer({this.label,this.value});
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
margin: EdgeInsets.symmetric(horizontal: 5),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.black87,
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
'$value',
style: TextStyle(
color: Colors.white,
fontSize: 54,
fontWeight: FontWeight.bold
),
),
Text(
"$label",
style: TextStyle(
color: Colors.white70,
),
)
],
),
);
}
}
flutter 计时器
KeyboardLifeIP属地: 浙江
0.216字数 0
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
1人点赞
KeyboardLife联系方式:260419167@qq.com
总资产1共写了6405字获得22个赞共10个粉丝
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Timer 是一个可进行一次或重复多次的计时器。 使用注意,请导入:import 'dart:async' 进入...
- 写一个倒计时定时器听起来真的好简单,然而在Flutter里面写这个东西还是挺坑的。 原本以为创建一个Timer就一...
- window对象 window对象是BOM的核心,window对象指当前的浏览器窗口。 window对象方法: 计...