Ошибка Flutter: не удалось найти правильный поставщик - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь отобразить здесь построитель ListView, который отображает CustomAdTile, который получает свои данные из AdModel, но когда я запускаю проект, я получаю эту ошибку:

Ошибка: не удалось найти правильный поставщик над этим виджетом MyAds

вот мой код:

 @override
 Widget build(BuildContext context) {

final ads = Provider.of<List<AdModel>>(context);

return StreamProvider<List<Profile>>.value(
  value: DatabaseService().profiles,
  child: StreamProvider<List<AdModel>>.value(
    value: DatabaseService().ads,
    child: Directionality(
      textDirection: TextDirection.rtl,
      child: Scaffold(
        appBar: AppBar(
          title: Text('My Ads'),
        ),
        body: Column(
          children: <Widget>[
            Container(
              alignment: Alignment.bottomRight,
              child: Padding(
                padding: const EdgeInsets.all(20.0),
                child: Text('Username', style: TextStyle(fontSize: 30),),
              ),
            ),

            reviewFlag ? Expanded(
              child: ListView.builder(
                  scrollDirection: Axis.vertical,
                  itemCount:(ads == null) ? 0 :  ads.length,
                  itemBuilder: (context, index){
                    return
                      CustomAdTile(adModel: ads[index],);
                  })
            ) : Text('Loading'),
          ],
        ),
      ),
    ),
  ),
);
}

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Зарегистрировали ли вы своего Провайдера?

return MultiProvider(
  providers: [
    ChangeNotifierProvider.value(
      value: AchievementProvider(),
    ),
    ChangeNotifierProvider.value(
      value: DailyBonusProvider(),
  ],
  child: MaterialApp(
    title: 'My Apps',
    theme: ThemeData(
      primarySwatch: Colors.blue,
      visualDensity: VisualDensity.adaptivePlatformDensity,
    ),
    home: HomePage(),
  ),
);
0 голосов
/ 21 июня 2020

Вы получаете экземпляр

Provider.of<List<AdModel>>(context)

перед инициализацией вашего провайдера в дереве виджетов.

См. Документацию ниже: Пакет провайдера

...