Я сейчас делаю приложение с Dart / flutter, и у меня проблема с маршрутизацией страниц. Приложение - это в основном соответствующее приложение, и я хочу добавить функциональность, позволяющую пользователю редактировать свой профиль. В настоящее время у нас есть 4 виджета с отслеживанием состояния: Match (), Message (), MyProfile () и EditProfile (). В нижней панели навигации я поместил три виджета: Match (), Message () и MyProfile (); когда пользователь хочет изменить информацию профиля, он переходит в MyProfile () и нажимает кнопку «изменить профиль», после чего пользователь переходит в EditProfile. После того, как пользователь изменит информацию, я хочу перенаправить страницу в MyProfile (), чтобы пользователь мог проверить информацию профиля. Приведенный ниже код является частью панели навигации.
class _NavigationHomeState extends State<NavigationHome> {
int _currentIndex = 0;
final List<Widget> _children = [
Match(),
Messages(),
MyProfile(),
];
void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
, и я помещаю приведенный ниже код в одну из кнопок EditProfile ().
Navigator.of(context).pushNamed('/myProfile');
Затем выдал мне сообщение об ошибке:
Ошибка: не удалось найти правильный поставщик над этим виджетом MyProfile
Вероятно, это происходит из-за того, что вы использовали BuildContext
, в который не входит выбранный вами провайдер. Существует несколько распространенных сценариев ios:
Поставщик, который вы пытаетесь прочитать, находится на другом маршруте.
Поставщики «ограничены». Поэтому, если вы вставите поставщика внутри маршрута, тогда другие маршруты не смогут получить доступ к этому поставщику.
Вы использовали BuildContext
, который является предком поставщика, которого вы пытаетесь для чтения.
Убедитесь, что MyProfile находится под вашим MultiProvider / Provider. Обычно это происходит, когда вы создаете поставщика и пытаетесь прочитать его немедленно.
Я думаю, я получаю эту ошибку, потому что мы установили _currentIndex в нижней панели навигации как 0, то есть Match (), поэтому Navigator.of (context) .pushNamed ('/ myProfile'); пытается перенаправить пользователя на страницу Match () (?)
Как мы можем перенести пользователя на страницу MyProfile после того, как человек сохранит и нажмет кнопку EditProfile ()?