Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmAwTm 119 of 125 menu
◀ ▶

Периодический Timer в Flutter

Обновление по расписанию - секундомер, часы, опрос статуса - делают через Timer.periodic из dart:async. Каждый тик вызывает колбэк; интервал задают вторым аргументом.

Таймер обязательно останавливают в dispose метода State методом timer.cancel(). Иначе колбэк продолжит вызывать setState после удаления виджета с дерева:

import 'dart:async'; import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: TimerDemoPage())); } class TimerDemoPage extends StatefulWidget { const TimerDemoPage({super.key}); @override State<TimerDemoPage> createState() => _TimerDemoPageState(); } class _TimerDemoPageState extends State<TimerDemoPage> { Timer? ticker; int seconds = 0; @override void initState() { super.initState(); ticker = Timer.periodic(const Duration(seconds: 1), (_) { setState(() { seconds++; }); }); } @override void dispose() { ticker?.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Timer')), body: Center( child: Text( 'Seconds passed: $seconds', style: const TextStyle(fontSize: 28), ), ), ); } }

Добавьте кнопку «Stop», которая отменяет Timer, и «Reset», которая обнуляет счётчик и снова запускает тик раз в секунду.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить