diff --git a/lib/src/resources/firebase_storage_provider.dart b/lib/src/resources/firebase_storage_provider.dart index 8d043ce..1f6eb81 100644 --- a/lib/src/resources/firebase_storage_provider.dart +++ b/lib/src/resources/firebase_storage_provider.dart @@ -5,18 +5,26 @@ import 'package:firebase_storage/firebase_storage.dart'; import 'package:uuid/uuid.dart'; class FirebaseStorageProvider { - final FirebaseStorage _storage; + final StorageReference _storage; final Uuid _uuid; // [FirebaseStorage] and [Uuid] instances can be injected for testing purposes. // Don't remove. - FirebaseStorageProvider([FirebaseStorage storage, Uuid uuid]) - : _storage = storage ?? FirebaseStorage.instance, + FirebaseStorageProvider([StorageReference storage, Uuid uuid]) + : _storage = storage ?? FirebaseStorage.instance.ref(), _uuid = uuid ?? Uuid(); /// Uploads a given file to the firebase storage bucket. /// /// It returns a [StorageUploadTask] which contains the status of the upload. - /// The [folder] parameters allows the file to be stored at any path in the - /// bucket. - StorageUploadTask uploadFile(File file, {String folder}) {} + /// The [folder] parameter should not start with "/" , it allows the file to + /// be stored at any path in the bucket. + /// The [type] parameter allows you to specify the extension of the file bein + /// uploaded, it defaults to png. + StorageUploadTask uploadFile(File file, + {String folder, String type = 'png'}) { + final String fileId = _uuid.v1(); + final StorageReference fileReference = + _storage.child('folder/$fileId.$type'); + return fileReference.putFile(file); + } }