J'ai joué avec Dart Timer Class que je l'ai fait fonctionner dans sa forme très basique, mais je suis bloqué en essayant d'y ajouter une fonction de pause. J'ai regardé dans leurs documentations, mais elles ne concernent pas beaucoup leur classe Timer ...
Est-il possible que je puisse mettre en pause et reprendre le chronomètre / compte à rebours au clic? Voici ce que j'ai accompli jusqu'à présent:
import 'package:flutter/material.dart';
import 'dart:async';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Timer _timer;
int _start = 10;
void startTimer() {
const oneSec = const Duration(seconds: 1);
_timer = new Timer.periodic(
oneSec,
(Timer timer) => setState(() {
if (_start < 1) {
timer.cancel();
} else {
_start = _start - 1;
}
}));
}
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(title: Text("Timer test")),
body: Column(
children: <Widget>[
RaisedButton(
onPressed: () {
startTimer();
},
child: Text("start"),
),
Text("$_start")
],
));
}
}
3 Réponses :
Il n'y a pas de fonction pause intégrée, puisque la classe Timer est principalement destinée à planifier des blocs de code pour plus tard.
Quel est votre cas d'utilisation? La classe Stopwatch a une pause et reprendre la fonctionnalité.
Vous trouverez ci-dessous un exemple de flutter fonctionnel avec pause et vibrations ( source ) < pré> XXX
Je viens de télécharger ce package pour implémenter exactement ceci: https://pub.dev/packages/pausable_timer a> Il existe également un problème demandant le fonctionnalité dans Dart lui-même , mais il ne semble pas qu'elle sera bientôt ajoutée. // It starts paused
final timer = PausableTimer(Duration(seconds: 1), () => print('Fired!'));
timer.start();
timer.pause();
timer.start();