File tree Expand file tree Collapse file tree 4 files changed +33
-3
lines changed
flutter_cache_manager_firebase Expand file tree Collapse file tree 4 files changed +33
-3
lines changed Original file line number Diff line number Diff line change 1
1
## [ 2.0.3] - 2024-07-23
2
+
2
3
* Updates dependencies ([ #457 ] ( https://github.com/Baseflow/flutter_cache_manager/pull/457 ) )
3
4
4
5
## [ 2.0.2] - 2024-04-25
6
+
5
7
* Updates dependencies to their latest versions.
6
8
7
9
## [ 2.0.1] - 2021-08-27
10
+
8
11
* Update dependencies
9
12
10
13
## [ 2.0.0] - 2021-05-28
14
+
11
15
* Update to null safety
12
16
13
17
## [ 1.1.0] - 2021-01-14
18
+
14
19
* Update Firebase dependency
15
20
16
21
## [ 1.1.0-beta] - 2020-10-02
22
+
17
23
* Update CacheManager dependency to 2.x.x.
18
24
19
25
## [ 1.0.1] - Update firebase dependency
26
+
20
27
* Added support for version 4.x.x
21
28
22
29
## [ 1.0.0] - Initial release
Original file line number Diff line number Diff line change 1
1
import 'package:flutter_cache_manager/flutter_cache_manager.dart' ;
2
+ import 'package:retry/retry.dart' ;
2
3
3
4
import 'firebase_http_file_service.dart' ;
4
5
@@ -7,12 +8,18 @@ import 'firebase_http_file_service.dart';
7
8
class FirebaseCacheManager extends CacheManager {
8
9
static const key = 'firebaseCache' ;
9
10
10
- static final FirebaseCacheManager _instance = FirebaseCacheManager ._();
11
+ static final FirebaseCacheManager _instance = FirebaseCacheManager ._(null );
12
+
13
+ final RetryOptions ? retryOptions;
11
14
12
15
factory FirebaseCacheManager () {
13
16
return _instance;
14
17
}
15
18
16
- FirebaseCacheManager ._()
19
+ FirebaseCacheManager .retry ({this .retryOptions = const RetryOptions ()})
20
+ : super (Config (key,
21
+ fileService: FirebaseHttpFileService (retryOptions: retryOptions)));
22
+
23
+ FirebaseCacheManager ._(this .retryOptions)
17
24
: super (Config (key, fileService: FirebaseHttpFileService ()));
18
25
}
Original file line number Diff line number Diff line change 1
1
import 'package:firebase_storage/firebase_storage.dart' ;
2
2
import 'package:flutter_cache_manager/flutter_cache_manager.dart' ;
3
+ import 'package:retry/retry.dart' ;
3
4
4
5
/// [FirebaseHttpFileService] is another common file service which parses a
5
6
/// firebase reference into, to standard url which can be passed to the
6
7
/// standard [HttpFileService] .
7
8
class FirebaseHttpFileService extends HttpFileService {
9
+ final RetryOptions ? retryOptions;
10
+
11
+ FirebaseHttpFileService ({
12
+ this .retryOptions,
13
+ });
14
+
8
15
@override
9
16
Future <FileServiceResponse > get (String url,
10
17
{Map <String , String >? headers}) async {
11
18
var ref = FirebaseStorage .instance.ref ().child (url);
12
- var downloadUrl = await ref.getDownloadURL ();
13
19
20
+ String downloadUrl;
21
+ if (retryOptions != null ) {
22
+ downloadUrl = await retryOptions! .retry (
23
+ () async => await ref.getDownloadURL (),
24
+ retryIf: (e) => e is FirebaseException ,
25
+ );
26
+ } else {
27
+ downloadUrl = await ref.getDownloadURL ();
28
+ }
14
29
return super .get (downloadUrl);
15
30
}
16
31
}
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ dependencies:
13
13
firebase_storage : ' >=12.0.0 <13.0.0'
14
14
path_provider : ^2.1.2
15
15
path : ^1.9.0
16
+ retry : ^3.1.2
16
17
17
18
dev_dependencies :
18
19
flutter_lints : ^4.0.0
You can’t perform that action at this time.
0 commit comments