xxxxxxxxxx
TweenAnimationBuilder<Duration>(
duration: Duration(minutes: 3),
tween: Tween(begin: Duration(minutes: 3), end: Duration.zero),
onEnd: () {
print('Timer ended');
},
builder: (BuildContext context, Duration value, Widget? child) {
final minutes = value.inMinutes;
final seconds = value.inSeconds % 60;
return Padding(
padding: const EdgeInsets.symmetric(vertical: 5),
child: Text('$minutes:$seconds',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 30)));
}),
xxxxxxxxxx
Timer(Duration(seconds: 3), () {
print("Yeah, this line is printed after 3 second");
});
// repeatedly :
Timer.periodic(Duration(seconds: 5), (timer) {
print(DateTime.now());
});
xxxxxxxxxx
import 'dart:async';
import 'package:flutter/material.dart';
class CountdownTimer extends StatefulWidget {
@override
_CountdownTimerState createState() => _CountdownTimerState();
}
class _CountdownTimerState extends State<CountdownTimer> {
int _secondsRemaining = 60;
Timer _timer;
@override
void initState() {
super.initState();
_startTimer();
}
void _startTimer() {
const oneSec = const Duration(seconds: 1);
_timer = Timer.periodic(
oneSec,
(Timer timer) {
if (_secondsRemaining == 0) {
_cancelTimer();
// Perform any necessary action when timer completes
} else {
setState(() {
_secondsRemaining--;
});
}
},
);
}
void _cancelTimer() {
if (_timer != null && _timer.isActive) {
_timer.cancel();
}
}
@override
void dispose() {
_cancelTimer();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container(
child: Text(
'$_secondsRemaining',
style: TextStyle(fontSize: 24),
),
);
}
}