Flutter实现倒计时功能,秒数转时分秒,然后倒计时
在Flutter中,你可以使用Timer
和Timer.periodic
来实现倒计时功能。以下是一个简单的实现示例:
import 'dart:async';
import 'package:flutter/material.dart';
class CountdownTimer extends StatefulWidget {
final int seconds;
CountdownTimer(this.seconds);
@override
_CountdownTimerState createState() => _CountdownTimerState();
}
class _CountdownTimerState extends State<CountdownTimer> {
Timer _timer;
int _seconds;
@override
void initState() {
super.initState();
_seconds = widget.seconds;
_startTimer();
}
@override
void dispose() {
_timer?.cancel();
super.dispose();
}
void _startTimer() {
const oneSec = const Duration(seconds: 1);
_timer = Timer.periodic(oneSec, (Timer timer) {
if (_seconds < 1) {
timer.cancel();
_seconds = 0;
} else {
setState(() {
_seconds = _seconds - 1;
});
}
});
}
String get _timeString {
DateTime time = DateTime.fromMillisecondsSinceEpoch(
_seconds * 1000,
);
return '${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}:${time.second.toString().padLeft(2, '0')}';
}
@override
Widget build(BuildContext context) {
return Text(
_timeString,
style: TextStyle(fontSize: 24),
);
}
}
使用这个CountdownTimer
小部件,你可以创建一个倒计时计时器,并指定倒计时的秒数。当倒计时结束时,计时器会自动取消。你可以直接在你的Flutter应用中的任何位置使用这个小部件,例如:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Countdown Timer Example'),
),
body: Center(
child: CountdownTimer(10), // 10 seconds countdown
),
),
);
}
}
这个例子中的倒计时器会从10秒开始倒计时。你可以根据需要更改这个值。
评论已关闭