From 516dff8b9236dcaffd89da7d8c908f04608fe16c Mon Sep 17 00:00:00 2001 From: minhdanh Date: Sat, 25 May 2024 19:55:58 +0700 Subject: [PATCH 1/2] Support bucket --- .../lib/src/firebase_cache_manager.dart | 19 +++++++++++-------- .../lib/src/firebase_http_file_service.dart | 13 +++++++++++-- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart b/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart index 08c44187..e45ed319 100644 --- a/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart +++ b/flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart @@ -8,18 +8,21 @@ import 'firebase_http_file_service.dart'; class FirebaseCacheManager extends CacheManager { static const key = 'firebaseCache'; - static final FirebaseCacheManager _instance = FirebaseCacheManager._(null); + static final FirebaseCacheManager _instance = + FirebaseCacheManager._(retryOptions: retryOptions, bucket: bucket); - final RetryOptions? retryOptions; + static RetryOptions? retryOptions; - factory FirebaseCacheManager() { + static String? bucket; + + factory FirebaseCacheManager({RetryOptions? retryOptions, String? bucket}) { + bucket = bucket; + retryOptions = retryOptions; return _instance; } - FirebaseCacheManager.retry({this.retryOptions = const RetryOptions()}) + FirebaseCacheManager._({RetryOptions? retryOptions, String? bucket}) : super(Config(key, - fileService: FirebaseHttpFileService(retryOptions: retryOptions))); - - FirebaseCacheManager._(this.retryOptions) - : super(Config(key, fileService: FirebaseHttpFileService())); + fileService: FirebaseHttpFileService( + retryOptions: retryOptions, bucket: bucket))); } diff --git a/flutter_cache_manager_firebase/lib/src/firebase_http_file_service.dart b/flutter_cache_manager_firebase/lib/src/firebase_http_file_service.dart index 301d0947..f7a6da5f 100644 --- a/flutter_cache_manager_firebase/lib/src/firebase_http_file_service.dart +++ b/flutter_cache_manager_firebase/lib/src/firebase_http_file_service.dart @@ -10,12 +10,21 @@ class FirebaseHttpFileService extends HttpFileService { FirebaseHttpFileService({ this.retryOptions, - }); + this.bucket, + }) : super(); + + final String? bucket; @override Future get(String url, {Map? headers}) async { - var ref = FirebaseStorage.instance.ref().child(url); + late Reference ref; + if (bucket != null) { + ref = + FirebaseStorage.instanceFor(bucket: "gs://$bucket").ref().child(url); + } else { + ref = FirebaseStorage.instance.ref().child(url); + } String downloadUrl; if (retryOptions != null) { From 69b888988c5dc63f34f0c37a3d9f5b480c6e4b22 Mon Sep 17 00:00:00 2001 From: minhdanh Date: Sun, 23 Jun 2024 09:08:42 +0700 Subject: [PATCH 2/2] Update related README --- flutter_cache_manager_firebase/README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/flutter_cache_manager_firebase/README.md b/flutter_cache_manager_firebase/README.md index 9a2f2c60..28df01a2 100644 --- a/flutter_cache_manager_firebase/README.md +++ b/flutter_cache_manager_firebase/README.md @@ -6,9 +6,16 @@ A Firebase implementation for [flutter_cache_manager](https://pub.dev/packages/f This library contains FirebaseCacheManager and FirebaseHttpFileService. -You can easily fetch a file stored on Firebase with +You can easily fetch a file stored on Firebase with ```dart var file = await FirebaseCacheManager().getSingleFile(url); ``` -You could also write your own CacheManager which uses the FirebaseHttpFileService. \ No newline at end of file +You could also write your own CacheManager which uses the FirebaseHttpFileService. + +### Custom Firebase storage bucket + +You can use a custom bucket by passing `bucket` parameter. For example: +```dart +FirebaseCacheManager(bucket: "my-bucket"); +```