Неверный тип аргумента для _countDownTimer.onComplete

#flutter #dart

Вопрос:

Поэтому я пытаюсь реализовать таймер обратного отсчета с GitHub, но я получаю ошибку, как показано на скриншоте. Сообщение об ошибке довольно четкое, но я не вижу, как его исправить… Я добавил два скриншота, которые, возможно, прояснят больше, чем просто код. У кого-нибудь из вас есть идея? 🙂

Заранее спасибо!

Сообщение об ошибке

Класс обратного отсчета времени

 CountDownTimer _countDownTimer = CountDownTimer(
      duration: kWorkDuration,
      fillColor: Colors.pink,
      onComplete: () {
        setState(() async {
          widget.timesCompleted[indexTimesCompleted] = Icon(
            Icons.brightness_1_rounded,
            color: Colors.pink,
            size: 5.0,
          );
          indexTimesCompleted  ;
          await NDialog(
            dialogStyle: DialogStyle(titleDivider: true),
            title: Text("Timer Completed"),
            content: Text("Time to break."),
            actions: <Widget>[
              ElevatedButton(
                  style: ButtonStyle(
                    backgroundColor: MaterialStateColor.resolveWith(
                        (states) => Colors.green),
                  ),
                  child: Text("Start a short break"),
                  onPressed: () {}),
            ],
          ).show(context);
        });
      },
    );

    CircularCountDownTimer clock = CircularCountDownTimer(
      controller: _clockController,
      isReverseAnimation: true,
      ringColor: Color(0xff0B0C19),
      height: height,
      width: width,
      autoStart: false,
      duration: _countDownTimer.duration * 60,
      isReverse: true,
      textStyle: TextStyle(color: Colors.white),
      fillColor: _countDownTimer.fillColor,
      backgroundColor: Color(0xFF2A2B4D),
      strokeCap: StrokeCap.round,
      onComplete: _countDownTimer.onComplete, //This is the faulty line
    );
 

Комментарии:

1. это CountDownTimer класс, который вы написали? Если это так, не могли бы вы попробовать изменить final Function onComplete final VoidCallback onComplete , чтобы посмотреть, поможет ли это решить проблему?

2. @h8moss Это полностью сработало, большое спасибо! Я просто не могу найти кнопку, чтобы каким-то образом закрепить ваш комментарий в качестве ответа…

3. С удовольствием помогу! Я опубликовал свой комментарий в качестве ответа, если вы хотите отметить это как правильный ответ 🙂

Ответ №1:

Проблема в том, что вы объявили on complete как любую функцию, а не как пустую функцию без аргументов. Чтобы исправить это, измените эту строку:

 final Function onComplete;
 

к этому:

 final VoidCallback onComplete;