ProviderNotFoundException выброшено

Это код, который я использую

class Wrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
if (user == null) {
  return LoginPage();
} else {
  return MyHomePage();
}
}
}

и пользовательский файл имеет

class User {
final String uid;
User({this.uid});
}

И я получаю эту ошибку:

Следующее исключение ProviderNotFoundException было сгенерировано при построении оболочки (грязный): Ошибка: не удалось найти правильный поставщик над этим виджетом оболочки. Вероятно, это происходит из-за того, что вы использовали BuildContext, который не включает поставщика по вашему выбору. Есть несколько распространенных сценариев:

  • Провайдер, которого вы пытаетесь прочитать, находится на другом маршруте. Провайдеры ограничены. Поэтому, если вы вставите поставщика внутри маршрута, другие маршруты не смогут получить доступ к этому поставщику.
  • Вы использовали BuildContext, который является предком провайдера, которого вы пытаетесь прочитать. Убедитесь, что Wrapper находится под вашим MultiProvider / Provider. Обычно это происходит, когда вы создаете провайдера и пытаетесь сразу его прочитать.

person Payel Masanta    schedule 27.07.2020    source источник


Ответы (1)


Вам необходимо предоставить объект User где-нибудь в виджете над Wrapper.

Что-то вроде этого:

Provider(
  create: (_) => User(),
  child: Wrapper()
)

https://pub.dev/documentation/provider/latest/

person Er1    schedule 27.07.2020