I'm trying to save multiple images from a list to firebasestorage and get back references of all these images and then saving it to cloud firestore !
This list is List<menu> menus = [];
here.
Multiple objects including paths of images only from phone are being saved from UI in this list(menus) and then I'm uploading images using these paths to firestorage and getting back its references to save it in 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();
},
This is addUser() function:
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"));
}
And this is Model class
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,
};
}
}
But when the button is pressed, following error is displayed...
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):
Help please!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…