首页 > 解决方案 > Flutter 错误:找不到正确的提供程序>

问题描述

我尝试在此处显示 ListView 构建器,该构建器显示从 AdModel 获取其数据的 CustomAdTile,但是当我运行该项目时,我收到此错误:

错误:在此 MyAds 小部件上方找不到正确的 Provider<List>

这是我的代码:

 @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'),
          ],
        ),
      ),
    ),
  ),
);
}

标签: flutterdartparameter-passingprovider

解决方案


您注册了您的 Provider 吗?

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(),
  ),
);

推荐阅读