Firebase 存储的图像链接返回 null - Flutter
Posted
技术标签:
【中文标题】Firebase 存储的图像链接返回 null - Flutter【英文标题】:Image link of firebase storage is returning null - Flutter 【发布时间】:2021-01-10 00:42:59 【问题描述】:显示图像的 fiorebase 存储链接时,我收到此错误 network_image_web.dart:26:16 url != null 不正确
以下是示例。是的,除了图片之外,供应商的所有其他领域都很好
class AddAlreadyExistingProductsView extends StatefulWidget
@override
_AddAlreadyExistingProductsViewState createState() =>
_AddAlreadyExistingProductsViewState();
class _AddAlreadyExistingProductsViewState
extends State<AddAlreadyExistingProductsView>
@override
Widget build(BuildContext context)
final _productsList = Provider.of<List<Product>>(context);
return Scaffold(
............
child:
SearchableDropdown.single(
............
items: _productsList.map((value)
print("---> pic : " + value.pic.toString()); // <--- NULL HERE
..........
child: ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(value.pic),
),
subtitle: Text(value.name)
.............
)
)
class MainDataProvider extends StatelessWidget
@override
Widget build(BuildContext context)
return MultiProvider(
providers: [
StreamProvider<List<Product>>.value(
value: DatabaseService().getAllProducts,
........
],
child: MaterialApp(
home: AddAlreadyExistingProductsView (),
),
);
我也尝试打印它,同时打印图像并返回 null。检索所有其他字段很好。我给出了存储在网络图像内的 firebase 数据库中的该图像的静态值,它运行良好。但是在动态获取数据时它不起作用。我不知道为什么。我在移动设备中以相同的方式获取数据并且它可以工作,但对于 Flutter Web 则无法正常工作。
这是产品型号代码
Stream<List<Product>> get getAllProducts
return productCollection.get().asStream().map(_productDataFromSnapshot);
List<Product> _productDataFromSnapshot(QuerySnapshot snapshot)
List<Product> productsList = List<Product>();
for (int i = 0; i < snapshot.docs.length; i++)
productsList.add(Product(
productID: snapshot.docs[i].data()['productID'] ?? "",
name: snapshot.docs[i].data()['name'] ?? "",
volume: snapshot.docs[i].data()['volume'] ?? "",
price: snapshot.docs[i].data()['price'] ?? "",
quantity: snapshot.docs[i].data()['quantity'] ?? "",
brand: snapshot.docs[i].data()['brand'] ?? "",
productAttribute: snapshot.docs[i].data()['productAttribute'] ?? "",
productCtgName: snapshot.docs[i].data()['productCtgName'] ?? "",
productSubCtgName: snapshot.docs[i].data()['productSubCtgName'] ?? "",
productCtgID: snapshot.docs[i].data()['productCtgID'] ?? "",
productSubCtgID: snapshot.docs[i].data()['productSubCtgID'] ?? "",
));
return productsList;
class Product
String productID;
String name;
int price;
int salePrice;
DateTime addDate;
String volume;
int quantity;
String productAttribute;
String productSubCtgID;
String productCtgID;
String productSubCtgName;
String productCtgName;
String brand;
String pic;
Product(
this.productID,
this.name,
this.price,
this.addDate,
this.volume,
this.quantity,
this.productAttribute,
this.brand,
this.productCtgID,
this.productSubCtgID,
this.productCtgName,
this.productSubCtgName,
this.pic,
this.salePrice,
);
【问题讨论】:
分享您的产品型号。 @Siddharthjha 对不起,我的错。我已经更新了问题 【参考方案1】:在 for 循环的 _productDataFromSnapshot 函数中,您没有初始化 pic 字段。
为防止此类错误,请对此类字段使用@required
【讨论】:
以上是关于Firebase 存储的图像链接返回 null - Flutter的主要内容,如果未能解决你的问题,请参考以下文章
如何在实时数据库firebase android中存储下载图像url
将图像链接从 Firebase 存储存储到 Firebase 数据库时出错
Firebase 存储 - 将图像上传到 Firebase 存储并在实时数据库中创建指向该图像的链接