Как заставить модуль Flutter вернуться к собственной активности Android после того, как собственная активность Android запускает вторичный маршрут?

Я добавляю флаттер в существующий проект Android, и все работает нормально, кроме одного:

В моем проекте Andrid есть только один модуль Flutter в этом модуле Flutter. У меня есть два маршрута, которые будут отображаться в разных частях проекта Android:

  initialRoute: '/',
  routes: {
    '/': (_) => MyHomePage(),
    '/settings': (_) => _SettingsPage()
  }

В Android Activity, если я начну новое действие Flutter следующим образом:

startActivity(
            FlutterActivity
                .withCachedEngine(flutterEngineId)
                .build(this)
        )

Он запустит Flutter с маршрутом страницы по умолчанию (/), что является ожидаемым результатом. Затем на этой странице Flutter, если я вернусь назад, он вызовет движок Flutter и вернется к активности Android. Пока все хорошо.

Но если я запускаю действие Flutter с настраиваемым начальным маршрутом, а затем нажимаю кнопку "Назад", он не запускает движок Flutter и переходит к действию Android, а к исходному маршруту Flutter (в данном случае / маршрут).

    startActivity(
        FlutterActivity
            .withNewEngine()
            .initialRoute("/settings")
            .build(this)
    )

Почему у нас такое поведение, если мы указываем начальный маршрут при запуске FlutterActivity?

И если это ожидаемое поведение, то как лучше всего заставить его перейти к активности Android?

2 ответа

Вот выдержка из документации:

Если имя маршрута начинается с косой черты, то оно рассматривается как «глубокая ссылка», и до того, как этот маршрут будет отправлен, маршруты, ведущие к нему, также будут отправлены. Даже если бы маршрут был просто / a, приложение началось бы с / и / a загружено. https://api.flutter.dev/flutter/material/MaterialApp/initialRoute.html

Вы можете попробовать переименовать свой маршрут «/ settings» в «settings».

Попробуйте SystemNavigator.pop(), чтобы выделить самый верхний маршрут флаттера.

Подробнее на https://api.flutter.dev/flutter/services/SystemNavigator/pop.html.

Другие вопросы по тегам