#flutter #printing #timer
Вопрос:
В настоящее время значение затраченного времени печатается миллион раз в секунду, хорошо, может быть, больше 10 раз. В этом нет необходимости. Я просто хочу, чтобы он печатался каждые 5 секунд или, если пользователь уходит со страницы, печатайте. Чтобы я мог записать количество времени, проведенного здесь.
Как мне этого добиться?
Ниже прилагается мой код:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TimerTest(),
);
}
}
class TimerTest extends StatefulWidget {
@override
_TimerTestState createState() => _TimerTestState();
}
class _TimerTestState extends State<TimerTest> with TickerProviderStateMixin {
AnimationController _controller;
int levelClock = 5400;
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: Duration(
seconds:
levelClock)
);
_controller.forward();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xff04072E),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Countup(
animation: StepTween(
begin: 0, // THIS IS A USER ENTERED NUMBER
end: levelClock,
).animate(_controller),
),
],
),
),
);
}
}
class Countup extends AnimatedWidget {
Countup({Key key, this.animation}) : super(key: key, listenable: animation);
Animation<int> animation;
@override
build(BuildContext context) {
Duration clockTimer = Duration(seconds: animation.value);
String timerText =
'${clockTimer.inMinutes.remainder(60).toString()}:${clockTimer.inSeconds.remainder(60).toString().padLeft(2, '0')}';
print('animation.value ${animation.value} ');
return Text(
"$timerText",
style: TextStyle(
fontSize: 45,
color: Theme.of(context).primaryColor,
),
);
}
}
Комментарии:
1. для записи времени каждые 5 секунд вы можете использовать Future. задержка(Продолжительность(секунд:5), () => печать(время));
2. это задерживает начало печати значения , но после первых 5 секунд значение снова печатается непрерывно.
Ответ №1:
Для этого вы можете использовать периодическую функцию таймера. Для получения более подробной информации : https://api.flutter.dev/flutter/dart-async/Timer/Timer.periodic.html
Комментарии:
1. это задерживает начало печати значения , но после первых 5 секунд значение снова печатается непрерывно.
2. Вызываете ли вы таймер в методе сборки?