i my application i'm using Dio
's Retrofit
sub library, and inside that i'm not sure how can i define cache mechanism for that,
i found this line in Retrofit
sample code:
@GET("")
Future<String> testCustomOptions(@DioOptions() Options options);
now how can i define cache on this http
request?
Retrofit documentation:
void main(List<String> args) {
final dio = Dio(); // Provide a dio instance
dio.options.headers["Demo-Header"] = "demo header"; // config your dio headers globally
final client = RestClient(dio);
client.getTasks().then((it) => logger.i(it));
dio-http-cache documentation:
QuickStart
Add a dio-http-cache interceptor in Dio :
dio.interceptors.add(DioCacheManager(CacheConfig(baseUrl: "http://www.google.com")).interceptor);
Set maxAge for a request :
Dio().get(
"http://www.google.com",
options: buildCacheOptions(Duration(days: 7)),
);
my full implemented code:
Provider(
create: (_) => MyApis.create(),
),
abstract class MyApis{
factory MyApis(Dio dio, {String baseUrl}) = _MyApis;
@GET("/login")
Future<HttpResponse<PageInformation>> login(@DioOptions() Options options);
static MyApis create() {
final dio = Dio();
dio.options.headers['Content-Type'] = 'application/json';
dio.options.receiveTimeout = 60000;
dio.options.connectTimeout = 120000;
return _MyApis(dio);
}
}
Add Parameter in your API Add point Call
Future<HttpResponse<PageInformation>> login(@DioOptions() Options options);
Add Interceptor in Dio
dio.interceptors.add(DioCacheManager(CacheConfig(baseUrl: 'YOUR BASE URL')).interceptor);
Create an object for Endpoint argument
Options options = buildCacheOptions(Duration(days: 10),forceRefresh: true);
Call your API End point
myapi.login(options)