Мое приложение отображает некоторые вводные экраны только при первом запуске приложения. После первого запуска первым отображаемым экраном должен быть мой HomePage
. Я пробовал эти маршруты:
"/" -> HomePage()
"/intro" -> IntroPage()
И затем установите initialRoute
так:
initialRoute: isFirstLaunch ? "/intro" : "/"
При такой конфигурации Flutter сначала помещает HomePage()
в стек навигации и IntroPage()
сверху, когда initialRoute
равен "/intro"
. Это плохо, потому что HomePage()
загружает CameraPreview
, поэтому он запрашивает разрешения и требует значительных ресурсов. Он не должен быть загружен, пока я не перейду к дому явно.
Я также пробовал эту конфигурацию:
"/" -> IntroPage()
"/home" -> HomePage()
Затем у меня есть IntroPage()
для заднего стека, что тоже не то, что я хочу.
Есть идеи, как это решить?
3 ответа
"intro": (BuildContext context) => IntroPage()
"home": (BuildContext context) => HomePage()
Гарантирует, что оба маршрута являются маршрутами верхнего уровня без родителя.
Документация по initialRoute
свойству MaterialApp объясняет это поведение как следующим образом :
Если маршрут содержит косые черты, то он рассматривается как «глубокая связь», и до того, как этот маршрут будет передан, также будут переданы маршруты, ведущие к этому. Например, если маршрут был / a / b / c, то приложение будет запускаться с тремя загруженными маршрутами / a, / a / b и / a / b / c в указанном порядке.
Как насчет просто загрузить нужный виджет непосредственно как ваше MaterialApp
приложение home
:
return MaterialApp(
home: isFirstLaunch? IntroScreen():HomeScreen(),
);
Похожие вопросы
Новые вопросы
navigation
Навигация относится к процессу навигации по сети ресурсов и к пользовательскому интерфейсу, который используется для этого.