Чтобы использовать таймер в виджете Flutter, вы можете использовать несколько методов. Вот несколько примеров:
Метод 1: использование конструктора Timer. periodic()
import 'package:flutter/material.dart';
import 'dart:async';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
Timer _timer;
int _seconds = 0;
@override
void initState() {
super.initState();
_timer = Timer.periodic(Duration(seconds: 1), (timer) {
setState(() {
_seconds++;
});
});
}
@override
void dispose() {
_timer.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Text('Seconds: $_seconds');
}
}
Метод 2: использование пакета CountdownTimer
import 'package:flutter/material.dart';
import 'package:countdown_timer/countdown_timer.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CountdownTimer(
endTime: DateTime.now().millisecondsSinceEpoch + 10000,
onEnd: () {
// Timer ended
},
textStyle: TextStyle(fontSize: 30),
);
}
}
Метод 3: использование комбинации StreamBuilder и Stream. periodic()
import 'package:flutter/material.dart';
import 'dart:async';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
Stream<int> _timerStream;
int _seconds = 0;
@override
void initState() {
super.initState();
_timerStream = Stream.periodic(Duration(seconds: 1), (i) => i);
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return StreamBuilder<int>(
stream: _timerStream,
builder: (context, snapshot) {
if (snapshot.hasData) {
_seconds = snapshot.data;
}
return Text('Seconds: $_seconds');
},
);
}
}
Это всего лишь несколько примеров того, как можно использовать таймер в виджете Flutter. Выберите метод, который лучше всего соответствует вашим потребностям, и реализуйте его соответствующим образом.