如何解决如何修复“在此ProductItem小部件上方找不到正确的Provider <Product>”?
我非常振奋。这是我第一次使用提供程序。我已经尝试过所有解决方案,但似乎无济于事。
在我正在开发的购物应用程序中,我尝试使用提供程序包将数据动态传递给我的小部件。
Gridview构建器
final productData = Provider.of<ProductsProvider>(context);
final products = productData.items;
return GridView.builder(
padding: EdgeInsets.all(10),itemCount: products.length,itemBuilder: (context,index) => ChangeNotifierProvider.value(
value: products[index],child: ProductItem()),gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,childAspectRatio: 0.75,crossAxisspacing: 10,mainAxisspacing: 10),);
网格中的单个产品项
final product = Provider.of<Product>(context);
return Container(
child: GestureDetector(
onTap: () {
Navigator.of(context)
.pushNamed(ProductDetails.routeName,arguments: product.id);
},child: Card(
color: Colors.white,elevation: 6,shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),child: Column(
crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
//product image
Image(image: Assetimage(product.imageUrl)),Padding(
padding: EdgeInsets.symmetric(vertical: 0,horizontal: 10),//item name and fav button
child: Flex(
direction: Axis.horizontal,children: <Widget>[
Expanded(
child: Text(
product.name,style: Theme.of(context)
.textTheme
.headline1
.copyWith(fontSize: 16,color: Colors.black),)),IconButton(
icon: Icon(
product.isFav
? Icons.favorite
: Icons.favorite_border,color: Colors.red,),onpressed: () {
product.toggleFav();
})
],// price and buy button
Padding(
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 0),child: Flex(
direction: Axis.horizontal,children: <Widget>[
Expanded(
child: Text(
"\$ " + product.price.toString(),style: Theme.of(context).textTheme.headline1.copyWith(
color: Theme.of(context).primaryColor,fontSize: 15),SizedBox(
width: 60,child: RaisedButton(
onpressed: () {},color: Colors.orange,child: Text(
"Buy",style: TextStyle(fontFamily: 'Prompt',fontSize: 14),)
],],);
解决方法
您需要在主材料小部件中声明提供者。 Atm您正在使用它,但是您没有告诉flutter您将使用它。
https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple#changenotifierprovider
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。