Я получаю сообщение об ошибке: Не удалось найти правильный провайдер <User>над этим виджетом настроек (УЖЕ ИСПРАВЛЕНО) - PullRequest
1 голос
/ 05 марта 2020

ИСПРАВЛЕНО: У меня не было установленного стримпровайдера перед материаломapp

У меня есть:

 final user = Provider.of<User>(context);

return StreamBuilder<UserData>(
  stream: DatabaseService(uid: user.uid).userData,
  builder: (context, snapshot) {
    if(snapshot.hasData){

      UserData userData = snapshot.data;

У меня есть класс пользователя:

class User {

final String uid;
final String email;
final String instagram;
String age;
String gender;
bool account;

User({this.email, this.age, this.gender, this.uid, this.instagram, this.account,});

}

Я не знаю, в чем проблема, я использовал ее где-то еще, и там она работает нормально

здесь журнал ошибок:

Error: Could not find the correct Provider<User> above this Settings Widget

Для исправьте, пожалуйста:

  • Убедитесь, что поставщик является предком этого виджета настроек
  • Предоставьте типы поставщику
  • Предоставьте типы потребителю
  • Предоставьте типы для Provider.of ()
  • Убедитесь, что используется правильный context.

1 Ответ

0 голосов
/ 05 марта 2020

Убедитесь, что у провайдера выше виджета «Настройки» в дереве виджетов, для этого вы можете передать класс пользователя у провайдера, обернув все приложение материала с помощью провайдера (), или просто обернуть виджет «Настройки» провайдером

Provider<User>(
create:(context)=>User(),
child:MaterialApp(
  //app
 ),
),

или

Provider<User>(
    create:(context)=>User(),
    child:SettingsWidget(
      //app
     ),
    ),
...