Неудачное утверждение при использовании onGenerateRoute с кнопкой возврата Flutter - PullRequest
3 голосов
/ 23 марта 2019

Я реализую навигацию в своем приложении, используя onGenerateRoute в MaterialApp.

Для одного из маршрутов я получаю эту ошибку, когда нажимаю кнопку, предоставляемую Flutter на панели приложений.

E / флаттер (22996): [ОШИБКА: флаттер / lib / ui / ui_dart_state.cc (148)] Необработанное исключение: ошибочное утверждение: булево выражение не должно быть пустой

E / флаттер (22996): # 0 ModalRoute.willPop (пакет: flutter / src / widgets / rout.dart) E / flutter (22996):

E / flutter (22996): # 1 NavigatorState.maybePop (пакет: flutter / src / widgets / navigator.dart: 1964: 57) E / flutter (22996):

E / flutter (22996): # 2 Navigator.maybePop (Упаковка: трепетание / SRC / виджеты / navigator.dart: 1291: 34)

E / flutter (22996): # 3 BackButton.build. (Упаковка: трепетание / SRC / материал / back_button.dart: 91: 19)

Не могли бы вы помочь мне понять, что не так?

Настройки моего маршрута ->

  Route<dynamic> routes(RouteSettings settings) {
    switch (settings.name) {
      case '/':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return HomePage();
          },
        );
        break;
      case '/contactlist':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return FriendsList();
          },
        );
        break;
      case '/ChatroomFormAdd':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return const ChatroomInfo(
                mode: 'Add');
          },
        );
        break;
      case '/ChatroomFormEdit':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return const ChatroomInfo(
                mode: 'Edit');
          },
        );
        break;
      case '/ChatroomFormView':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return const ChatroomInfo(
                mode: 'View');
          },
        );
        break;
      case '/ChatroomFormApprove':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return const ChatroomInfo(
                mode: 'Approve');
          },
        );
        break;
      case '/errorscreen':
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return ErrorScreen();
          },
        );
        break;
      default:
        return MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return ChatDetail(chatroomID: chatroomID);
          },
        );
        break;
    }
  }

Кнопка «Назад» работает для всех ожидаемых маршрутов, когда я возвращаюсь со следующего маршрута:

Navigator.of(context).pushNamed('/ChatroomFormView');

1 Ответ

0 голосов
/ 02 июня 2019

Вы использовали WillPopScope виджет?если это так, вам нужно предоставить функцию, которая возвращает Future<boolean> в onWillPop параметр.

WillPopScope(
      onWillPop: () { 
        //need to return Future<bool> here
      }
}
...