Как сделать паузу и возобновить quiver.asyn c CountdownTimer во флаттере - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь реализовать таймер обратного отсчета во флаттере. Я получил это работает, но не могу реализовать функцию паузы и возобновления класса. Ниже я попробовал:

import 'package:flutter/material.dart';   
import 'package:quiver/async.dart';

     void startTimer() {
        CountdownTimer countDownTimer = new CountdownTimer(
          new Duration(seconds: _start),
          new Duration(seconds: 2),
        );

        var sub = countDownTimer.listen(null);
        sub.onData((duration) {
         // Here i tried try to check a bool variable and pause the timer


    if(pauseTimer == true){
        sub.pause();
      }

     // Here i tried try to check a bool variable and resume the timer

    else if(pauseTimer == false){
            sub.resume();
          }
          setState(() {
            _current = _start - duration.elapsed.inSeconds;

          });

            if(_current == 0){
              //Do something here..
              }
        });




        sub.onDone(() {
          print("Done");
          sub.cancel();
        });

      }

Проблема, однако, в том, что работает только пауза, а Resume не работает. Пожалуйста, любую идею, как заставить Паузу и Возобновить работу от нажатия кнопки. Спасибо

1 Ответ

2 голосов
/ 22 апреля 2020

sub.resume() не работает, потому что после паузы таймер onData не срабатывает. Вы можете просто сделать один FlatButton и реализовать onTap точно так же.

StreamSubscription sub; // declare it as a class variable and then assign it in function

bool isPaused =false; /// your state class variable
onTap :(){
    if(isPaused)
        sub?.resume(); // performing a null check operation here...
    else
        sub?.pause(); // ...if sub is null then it won't call any functions
}

//// Note:- make sure to cancel sub like 
 sub?.cancel();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...