Flutter购物应用图片加载报错:Invalid Argument(s): No host specified
解决Flutter购物应用的两个问题
一、图片加载报错(Invalid Argument(s): No host specified in URI file...)
问题根源
你用了"packages/shrine_images/0-0.jpg"这种第三方包的资源路径,但实际图片存在本地assets文件夹里,路径不匹配;另外可能没正确配置pubspec.yaml的资源声明,或者多余传递了package参数。
解决步骤
- 修正图片路径
把ProductsRepository里的image字段改成本地assets的实际路径,比如你的图片放在assets/images/目录下,就改成"assets/images/0-0.jpg",去掉packages/shrine_images/前缀。 - 检查pubspec.yaml配置
确保在flutter节点下正确声明assets路径,示例:
配置完成后执行flutter: assets: - assets/images/ # 也可以指定单张图片,比如- assets/images/0-0.jpgflutter pub get,或者重启项目生效。 - 调整Image.asset的参数
本地资源不需要传package参数,如果Product类里的assetPackage是用于传递包名的,直接设为null或者删除这个参数,修改后的代码示例:Image.asset(product.image)
二、ListView无限滚动问题
问题根源
ListView.builder默认未设置itemCount,会无限调用itemBuilder生成内容,导致无限滚动。
解决步骤
给ListView.builder添加itemCount参数,产品详情页只需要展示当前商品的内容,所以设为1(如果有多个详情模块,就设对应数量)。修改后的代码示例:
ListView.builder( itemCount: 1, // 限制生成的item数量,避免无限滚动 itemBuilder: (context, index) { return Column( children: [ Image.asset(product.image), Text(product.name), Text("¥${product.price}"), // 其他详情组件 ], ); }, )
内容的提问来源于stack exchange,提问作者pleasesendhelp
相关产品推荐
相关产品推荐

