1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import 'package:flutter/material.dart';
- import 'package:flutter/scheduler.dart';
- import 'package:flutter_animation_progress_bar/flutter_animation_progress_bar.dart';
- class CodeTimerProgress extends StatefulWidget {
- final int period;
- CodeTimerProgress({
- Key? key,
- required this.period,
- }) : super(key: key);
- @override
- _CodeTimerProgressState createState() => _CodeTimerProgressState();
- }
- class _CodeTimerProgressState extends State<CodeTimerProgress>
- with SingleTickerProviderStateMixin {
- late final Ticker _ticker;
- double _progress = 0.0;
- late final int _microSecondsInPeriod;
- @override
- void initState() {
- super.initState();
- _microSecondsInPeriod = widget.period * 1000000;
- _ticker = createTicker((elapsed) {
- _updateTimeRemaining();
- });
- _ticker.start();
- _updateTimeRemaining();
- }
- void _updateTimeRemaining() {
- int timeRemaining = (_microSecondsInPeriod) -
- (DateTime.now().microsecondsSinceEpoch % _microSecondsInPeriod);
- setState(() {
- _progress = (timeRemaining / _microSecondsInPeriod);
- });
- }
- @override
- void dispose() {
- _ticker.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return FAProgressBar(
- currentValue: _progress * 100,
- size: 4,
- animatedDuration: const Duration(milliseconds: 10),
- progressColor: Colors.orange,
- changeColorValue: 40,
- changeProgressColor: Colors.green,
- );
- }
- }
|