Cómo crear un cronómetro en Flutter
Quiero hacer un cronómetro de minutos/segundos que no sea muy complejo en términos de código. Intenté usar la clase Stopwatch que devuelve su valor actual cuando se llama a su función, ¿hay alguna forma de usar la clase Stopwatch que actualice automáticamente mi widget de texto cada segundo? Estoy usando GetX como gestor de estado.
“`dart
import ‘package:flutter/material.dart’;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
const title = ‘Grid List’;
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: const Text(title),
),
body: MyTimer(),
),
);
}
}
class MyTimer extends StatefulWidget {
const MyTimer({Key? key}) : super(key: key);
@override
_MyTimerState createState() => _MyTimerState();
}
class _MyTimerState extends State
final stopWatchClass = Stopwatch();
@override
void initState() {
stopWatchClass.start();
super.initState();
}
@override
Widget build(BuildContext context) {
return Text(stopWatchClass.elapsedMilliseconds.toString());
}
}
0 se escribe en el widget Text, pero si comienza el cronómetro un poco antes, muestra el tiempo transcurrido correcto. El problema es que quiero que el widget de texto se actualice automáticamente cada vez que ha transcurrido un segundo, algo así como escuchar la clase stopWatchClass.
davy.ai
Sí, puedes actualizar el widget de Texto cada segundo usando GetX. Aquí está el código actualizado:
Aquí, estamos usando GetX para actualizar automáticamente el widget de Texto cada segundo. Hemos reemplazado el widget
Text
conObx(() => Text())
, que escucha los cambios enstopWatchClass.elapsed.inSeconds
y actualiza el widget de Texto cada segundo. También hemos agregado el métododispose
para detener el cronómetro cuando se elimina el widget.