Flutter Как автоматически выводить страницу в соответствии с потоковым событием?

#android #flutter #flutter-state

#Android #flutter #состояние флаттера

Вопрос:

Я хочу вывести страницу музыкального проигрывателя, когда аудиопоток остановлен. Но я получаю сообщение об ошибке типа

 Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe
 

Это мой код, который я поместил внутри метода сборки перед возвратом scaffold.

 AudioService.playbackStateStream.listen((event) {
      if (event?.processingState == AudioProcessingState.stopped) {
        
        try {
          final modal = ModalRoute.of(context);
          if (modal.isCurrent) {
            Navigator.of(context).pop();
          }
        } catch (e) {
          print("exception error in player adv $e");
        }
      }
    });
 

Ответ №1:

Попробуйте переместить это в initState() возможно, что каждый раз, когда виджет перестраивается, добавляется слушатель, поэтому в итоге у вас будет несколько слушателей, и при срабатывании они будут вызываться pop несколько раз

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

1. После переключения слушателя на initState() я получаю NoSuchMethodError: The method 'dependOnInheritedWidgetOfExactType was called on null error occured.

2. Попробуйте остановить сборку и создать заново. Если это не помогает, ошибки обычно имеют ссылки на строку кода, вызывающую это, может дать лучшую подсказку