I am trying to upload an image to Firebase Storage in my Flutter app. Firebase initializes successfully, and the upload begins, but it fails midway with the error:
Error ::
[firebase_storage/unknown] cancelled
flutter: Firebase initialized successfully!
flutter: Anonymous sign-in successful!
flutter: State: TaskState.running
flutter: Transferred: 0 / 0
flutter: State: TaskState.running
flutter: Transferred: 150 / 2564108
flutter: State: TaskState.running
flutter: Transferred: 2097302 / 2564108
flutter: State: TaskState.running
flutter: Transferred: 2097302 / 2564108
flutter: Upload failed: cancelled
[ERROR:flutter/runtime/dart_vm_initializer(41)] Unhandled Exception: [firebase_storage/unknown] cancelled
final ImagePicker _picker = ImagePicker();
XFile? _image;
UploadTask? uploadTask;
bool _isUploading = false;
String imgUrl = '';
// Function to pick an image from the gallery
Future<void> _pickImage() async {
final pickedFile = await _picker.pickImage(source: ImageSource.gallery);
if (pickedFile != null) {
setState(() {
_image = pickedFile;
});
}
}
// Function to upload image to Firebase Storage
Future<void> uploadFile(BuildContext context) async {
if (_image == null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Please select an image first!")),
);
return;
}
final file = File(_image!.path);
if (!file.existsSync()) {
debugPrint("File does not exist.");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("File does not exist!")),
);
return;
}
try {
setState(() {
_isUploading = true;
});
final ref = FirebaseStorage.instance
.ref()
.child('files/${basename(_image!.path)}');
uploadTask = ref.putFile(file);
uploadTask!.snapshotEvents.listen((event) {
debugPrint("State: ${event.state}");
debugPrint("Transferred: ${event.bytesTransferred} / ${event.totalBytes}");
if (event.state == TaskState.canceled) {
debugPrint("Upload was canceled by the user or system.");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Upload canceled!")),
);
}
});
final snapshot = await uploadTask!.whenComplete(() {});
final downloadUrl = await snapshot.ref.getDownloadURL();
setState(() {
_isUploading = false;
imgUrl = downloadUrl;
});
debugPrint("Upload successful: $downloadUrl");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Upload successful!")),
);
} on FirebaseException catch (e) {
setState(() {
_isUploading = false;
});
debugPrint("Upload failed: ${e.message}");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Upload failed: ${e.message}")),
);
} catch (e) {
setState(() {
_isUploading = false;
});
debugPrint("An unknown error occurred: $e");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("An unknown error occurred: $e")),
);
}
}