Ошибка флаттера "Не удалось перейти к исходному маршруту"
Я получаю следующую ошибку при запуске приложения Flutter:
══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════
The following message was thrown:
Could not navigate to initial route.
The requested route name was: "/animals/cats/lolcats"
The following routes were therefore attempted:
* /
* /animals
* /animals/cats
* /animals/cats/lolcats
This resulted in the following objects:
* MaterialPageRoute<dynamic>("/", animation: null)
* MaterialPageRoute<dynamic>("/animals", animation: null)
* null
* MaterialPageRoute<dynamic>("/animals/cats/lolcats", animation: null)
One or more of those objects was null, and therefore the initial route specified will be ignored and
"/" will be used instead.
════════════════════════════════════════════════════════════════════════════════════════════════════
Я объявил маршрут /animals/cats/lolcats
:
'/animals': (context) => AnimalsScreen(context),
'/animals/dogs': (context) => DogsScreen(context),
'/animals/cats/lolcats': (context) => LolcatsScreen(context),
и установить мой initialRoute
в
initialRoute: '/animals/cats/lolcats',
Почему я получаю вышеуказанную ошибку, даже если маршрут объявлен?
1 ответ
Решение
Я думаю, что журналы ошибок довольно явные.
Поскольку вы использовали "/" для разделения ваших маршрутов, это интерпретируется как "под-маршруты". На самом деле он пытается пройти эти маршруты один за другим:
* /
* /animals
* /animals/cats
* /animals/cats/lolcats
И с тех пор /animals/cats
не определен, t получает ошибку и затем возвращается к начальному маршруту: /
Если вы хотите решить эту проблему, переименуйте ваши маршруты с подчеркиванием следующим образом:/animals_cats_lolcats
Так что он не будет пытаться получить /animals/cats
который не существует