Skip to content

Commit eb224ab

Browse files
authored
Merge pull request #455 from minhdanh/develop
Support custom Firebase storage bucket
2 parents 0f05da6 + 69b8889 commit eb224ab

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

flutter_cache_manager_firebase/README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ A Firebase implementation for [flutter_cache_manager](https://pub.dev/packages/f
66

77
This library contains FirebaseCacheManager and FirebaseHttpFileService.
88

9-
You can easily fetch a file stored on Firebase with
9+
You can easily fetch a file stored on Firebase with
1010
```dart
1111
var file = await FirebaseCacheManager().getSingleFile(url);
1212
```
1313

14-
You could also write your own CacheManager which uses the FirebaseHttpFileService.
14+
You could also write your own CacheManager which uses the FirebaseHttpFileService.
15+
16+
### Custom Firebase storage bucket
17+
18+
You can use a custom bucket by passing `bucket` parameter. For example:
19+
```dart
20+
FirebaseCacheManager(bucket: "my-bucket");
21+
```

flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@ import 'firebase_http_file_service.dart';
88
class FirebaseCacheManager extends CacheManager {
99
static const key = 'firebaseCache';
1010

11-
static final FirebaseCacheManager _instance = FirebaseCacheManager._(null);
11+
static final FirebaseCacheManager _instance =
12+
FirebaseCacheManager._(retryOptions: retryOptions, bucket: bucket);
1213

13-
final RetryOptions? retryOptions;
14+
static RetryOptions? retryOptions;
1415

15-
factory FirebaseCacheManager() {
16+
static String? bucket;
17+
18+
factory FirebaseCacheManager({RetryOptions? retryOptions, String? bucket}) {
19+
bucket = bucket;
20+
retryOptions = retryOptions;
1621
return _instance;
1722
}
1823

19-
FirebaseCacheManager.retry({this.retryOptions = const RetryOptions()})
24+
FirebaseCacheManager._({RetryOptions? retryOptions, String? bucket})
2025
: super(Config(key,
21-
fileService: FirebaseHttpFileService(retryOptions: retryOptions)));
22-
23-
FirebaseCacheManager._(this.retryOptions)
24-
: super(Config(key, fileService: FirebaseHttpFileService()));
26+
fileService: FirebaseHttpFileService(
27+
retryOptions: retryOptions, bucket: bucket)));
2528
}

flutter_cache_manager_firebase/lib/src/firebase_http_file_service.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,21 @@ class FirebaseHttpFileService extends HttpFileService {
1010

1111
FirebaseHttpFileService({
1212
this.retryOptions,
13-
});
13+
this.bucket,
14+
}) : super();
15+
16+
final String? bucket;
1417

1518
@override
1619
Future<FileServiceResponse> get(String url,
1720
{Map<String, String>? headers}) async {
18-
var ref = FirebaseStorage.instance.ref().child(url);
21+
late Reference ref;
22+
if (bucket != null) {
23+
ref =
24+
FirebaseStorage.instanceFor(bucket: "gs://$bucket").ref().child(url);
25+
} else {
26+
ref = FirebaseStorage.instance.ref().child(url);
27+
}
1928

2029
String downloadUrl;
2130
if (retryOptions != null) {

0 commit comments

Comments
 (0)