Flutter - ошибка при вызове Navigator.pop () на экран с открытым Drawer - PullRequest
0 голосов
/ 30 апреля 2020

В моем приложении флаттера у меня есть главный экран с ящиком, который содержит столбец кнопок. При нажатии кнопки он переходит на другой экран и воспроизводит аудиодорожку с помощью этой функции:

onPressed: () {
          Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => AudioPlayerPage(
                  cover: widget.assetPath,
                  num: widget.trackNumber,
                  currentTrackName: widget.trackName,
                  trackPath: widget.trackPath,
                ),
              ));

При возвращении из AudioPlayerPage я звоню

class _AudioPlayerPageState extends State<AudioPlayerPage> {
  Future<bool> onBack()
  {
    AudioController.stopTrack();
    Navigator.of(context).pop();
    return null;
  }
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: onBack, 
      child: (..)

Проблема заключается в том, что когда Я возвращаюсь, у меня появляется ошибка (которая не появляется, если я вручную закрываю ящик перед переходом на другой экран, но я хочу, чтобы он был открыт, когда пользователь возвращается. Есть ли способ сделать это? ?)

    ════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following assertion was thrown while finalizing the widget tree:
setState() or markNeedsBuild() called when widget tree was locked.

This _ModalScope<dynamic> widget cannot be marked as needing to build because the framework is locked.
The widget on which setState() or markNeedsBuild() was called was: _ModalScope<dynamic>-[LabeledGlobalKey<_ModalScopeState<dynamic>>#f67c1]
  state: _ModalScopeState<dynamic>#cd13e
When the exception was thrown, this was the stack: 
#0      Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:3901:9)
#1      Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3911:6)
#2      State.setState (package:flutter/src/widgets/framework.dart:1168:14)
#3      _ModalScopeState._routeSetState (package:flutter/src/widgets/routes.dart:664:5)
#4      ModalRoute.setState (package:flutter/src/widgets/routes.dart:784:30)
...
══════
...