Ошибка поздней инициализации: Поле «_timer@137128430» не было инициализировано в безопасной версии flutter Null

#flutter #flutter-layout

Вопрос:

Я новичок в флаттере , я добавил текучий код, и флаттер предложил добавить позже, я добавил late Timer _timer; после того, как он показал мне следующую ошибку

Ошибка латинизации: Поле «_timer@137128430» не было инициализировано.

есть какое-нибудь решение для этого? Спасибо

код здесь

   late Timer _timer;
  int _start = 60;

  //start timer
  void startTimer() {
    const oneSec = const Duration(seconds: 1);
    _timer = new Timer.periodic(
      oneSec,
          (Timer timer) {
        if (_start == 0) {
          setState(() {
            timer.cancel();
          });
        } else {
          setState(() {
            _start--;
          });
        }
      },
    );
  }
  @override
  void initState() {
    super.initState();
    startTimer();
    
  }

  @override
  void dispose() {
    _timer.cancel();
    super.dispose();
  }
 

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

1. Не воспроизводимо. Я скопировал код и запустил то же самое на dartpad и его работе.

2. @RohanThacker Привет , приятель, я использовал безопасную версию flutter Null

3. То же самое здесь, этот код выглядит нормально

4. @Ты уверен ? 🙁 но там нет работы

5. Да, вы пытались перезапустить приложение?

Ответ №1:

Пожалуйста, позвоните в startTimer() перед super.initState() в initState. Как показано ниже

@переопределение

пустота в состоянии инициализации() {

  startTimer();
 super.initState();
 
 

}

Ответ №2:

Используйте Timer? _timer; вместо late Timer _timer;