firebase - 如何将多个图像保存到 Firebase 存储并一次获取图像 URL?
问题描述
我正在尝试将列表中的多个图像保存到 firebasestorage 并取回所有这些图像的引用,然后将其保存到 cloud firestore!
这份清单在List<menu> menus = [];
这里。
多个对象(包括仅来自手机的图像路径)正在此列表(菜单)中的 UI 中保存,然后我使用这些路径将图像上传到 firestorage 并取回其引用以将其保存在 firestore 中:
onPressed: () async {
for (var i; i <= menus.length; i++) {
Reference ref = storage.ref().child(
"${this.widget.rr.name}'s ${menus[i].itemName} Price ${menus[i].itemPrice}" +
DateTime.now().toString());
if (menus[i].imageFile.toString() == '') {
//Some code
} else {
UploadTask uploadTask = ref.putFile(menus[i].imageFile);
uploadTask.then((res) async {
menus[i].imageUrl = await res.ref.getDownloadURL();
});
}
}
await addUser();
},
这是 addUser() 函数:
Future<void> addUser() {
return users
.add({
'name': this.widget.rr.name,
'email': this.widget.rr.email,
'password': this.widget.rr.password,
'logoUrl': this.widget.rr.logo,
'categories': this.widget.rr.categories,
'menu': menus.map((i) => i.toMap()).toList(),
})
.then((value) => print("User Added"))
.catchError((error) => print("Failed to add user: $error"));
}
这是模型类
class menu{
int id;
String itemName;
String itemPrice;
String itemDescription;
File imageFile;
String imageUrl;
menu(this.id,this.itemName,this.itemPrice,this.itemDescription,this.imageFile,{this.imageUrl});
Map<String, dynamic> toMap() {
return {
'id': this.id,
'itemName': this.itemName,
'itemPrice': this.itemPrice,
'itemDesc': this.itemDescription,
'imageUrl':this.imageUrl,
};
}
}
但是当按下按钮时,会显示以下错误...
E/flutter (12025): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method '<=' was called on null.
E/flutter (12025): Receiver: null
E/flutter (12025): Tried calling: <=(2)
E/flutter (12025): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (12025): #1 _addMenuState.build.<anonymous closure> (package:ad_tello/UI/Restaurants/addMenu.dart:418:33)
E/flutter (12025): #2 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19)
E/flutter (12025): #3 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1111:38)
E/flutter (12025): #4 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
E/flutter (12025): #5 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
E/flutter (12025): #6 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
E/flutter (12025): #7 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:259:7)
E/flutter (12025): #8 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
E/flutter (12025): #9 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:362:20)
E/flutter (12025): #10 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
E/flutter (12025): #11 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
E/flutter (12025): #12 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
E/flutter (12025): #13 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
E/flutter (12025): #14 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
E/flutter (12025): #15 _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (12025): #16 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (12025): #17 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (12025): #18 _invoke1 (dart:ui/hooks.dart:265:10)
E/flutter (12025): #19 _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
E/flutter (12025):
请帮忙!
解决方案
你必须初始化i
:
for (var i = 0; i < menus.length; i++) {
推荐阅读
- pyomo - 如何从 Coin-OR 框架获取可行性泵的迭代和运行时间
- layout - 如何在“react-admin”“显示”和“编辑”和“创建”屏幕中有更复杂的布局?
- math - Netlogo 获得距离内所有邻居的推力
- highcharts - Does Highchart.js not have 'stacked percentage bar' chart
- javascript - Sequelize ORM:如何将模型静态关联到数据库?
- r - R Code ignored nargs() if statement
- python - AttributeError:模块“nmap”没有属性“PortScanner”
- sql-server - T-SQL query assistance two single quotes in where clause
- java - 未锁定的方法在对象监视器上被阻止
- sql - Cannot bound a NOT EXISTS clause in SQL Server