Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions flutter_cache_manager_firebase/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
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");
```
19 changes: 11 additions & 8 deletions flutter_cache_manager_firebase/lib/src/firebase_cache_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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)));
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,21 @@ class FirebaseHttpFileService extends HttpFileService {

FirebaseHttpFileService({
this.retryOptions,
});
this.bucket,
}) : super();

final String? bucket;

@override
Future<FileServiceResponse> get(String url,
{Map<String, String>? 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) {
Expand Down