rx_cache_manager 0.0.3
rx_cache_manager: ^0.0.3 copied to clipboard
A new cache_manager package for cache url data and contents.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:rx_cache_manager/rx_cache_manager.dart';
import 'package:rx_cache_manager/strategy/cache_or_async_strategy.dart';
class PayoutSettings {
PayoutSettings({
this.id,
this.bankCode,
this.bankName,
this.bankAccountNumber,
this.bankAccountName,
this.bankEnquirySessionID,
this.interval,
this.canEdit = true,
this.verified = false,
this.prevPayout,
this.nextPayout,
this.createdAt,
this.updatedAt,
});
String? id;
String? bankCode;
String? bankName;
String? bankAccountNumber;
String? bankAccountName;
String? bankEnquirySessionID;
String? interval;
bool verified;
bool canEdit;
DateTime? prevPayout;
DateTime? nextPayout;
DateTime? createdAt;
DateTime? updatedAt;
factory PayoutSettings.fromMap(Map json) {
return PayoutSettings()
..id = json['id']
..bankCode = json['bankCode']
..bankName = json['bankName']
..bankAccountNumber = json['bankAccountNumber']
..bankAccountName = json['bankAccountName']
..bankEnquirySessionID = json['bankEnquirySessionID']
..interval = json['interval']
..canEdit = json['canEdit'] == true
..verified = json['verified'] == true
..prevPayout =
json['prevPayout'] != null ? DateTime.parse(json['prevPayout']) : null
..nextPayout =
json['nextPayout'] != null ? DateTime.parse(json['nextPayout']) : null
..createdAt =
json['createdAt'] != null ? DateTime.parse(json['createdAt']) : null
..updatedAt =
json['updatedAt'] != null ? DateTime.parse(json['updatedAt']) : null;
}
Map toMap() {
return {
'id': id,
'bankCode': bankCode,
'bankName': bankName,
'bankAccountNumber': bankAccountNumber,
'bankAccountName': bankAccountName,
'bankEnquirySessionID': bankEnquirySessionID,
'interval': interval,
'canEdit': canEdit,
'prevPayout': prevPayout?.toIso8601String(),
'nextPayout': nextPayout?.toIso8601String(),
'createdAt': createdAt?.toIso8601String(),
'updatedAt': updatedAt?.toIso8601String(),
};
}
}
void main() async {
final cache = RxCacheManager(CacheStorage("default"));
await Future.delayed(const Duration(seconds: 1));
cache.clear();
final request = await cache
.from<PayoutSettings, Map>("payout-settings")
.withAsync(() => Future.delayed(
const Duration(seconds: 2),
() => {
"id": "1234",
"interval": "monthly",
}))
.withSerializer((json) => PayoutSettings.fromMap(json))
.withStrategy(CacheOrAsyncStrategy())
.withTtl(30000000)
.execute();
print(request?.toMap());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Placeholder(),
),
);
}
}