cache_manager 1.0.0+4 cache_manager: ^1.0.0+4 copied to clipboard
Cache manager to store local cache. Cache manager is wrapper for storing various data type(JSON, String, int etc) as the local cache in your Flutter app.
โกCache Manager #
A tidy utility to handle cache of your flutter app like a Boss. It provides support for both iOS and Android platforms (offcourse).
๐Installing #
dependencies:
cache_manager: ^<latest_version>
โฝAwesome Features #
๐งCache Utilities #
๐CacheManagerUtils.conditionalCache({key, valueType, actionIfNull, actionIfNotNull})
- Conditional builder based on the value of cache.
actionIfNull
&actionIfNotNull
are dynamic arguments used for Navigation through views, Rendering UI, Debugging values etc. ThevalueType
refers to the datatype of cache (StringValue
,BoolValue
,IntValue
,DoubleValue
)
๐CacheManagerUtils.cacheTextBuilder(textStyle, cacheKey})
- TextBuilder for the cached value.
cacheKey
is the key used to address the cache. The builder will return 'Invalid cache' if no cache is missing. UsetextStyle
to style the value of the cache.
๐Read cache #
๐ReadCache.getJson(key)
: Get JSON stored as cache.
๐ReadCache.getString(key)
: Get string stored as cache.
๐ReadCache.getBool(key)
: Get boolean stored as cache.
๐ReadCache.getInt(key)
: Get integer stored as cache.
๐ReadCache.getDouble(key)
: Get double stored as cache.
๐Write cache #
๐WriteCache.setJson(key,value)
: Set JSON as cache.
๐WriteCache.setString(key,value)
: Set a string as cache.
๐WriteCache.setInt(key,value)
: Set an integer as cache.
๐WriteCache.setBool(key,value)
: Set a boolean as cache.
๐WriteCache.setDouble(key,value)
: Set a double as cache.
๐WriteCache.setListString(key,value)
: Set a List of string as cache.
โDelete cache #
๐DeleteCache.deleteKey(key,[takeAction])
: Delete the cache and perform an action when cache is deleted(Optional).
Example : Login flow with caching userID #
//Attached function in a login view
Future<String?> login({
required BuildContext context,
required String email,
required String password,
}) async {
try {
var userId = await _authenticationService.login(
context: context, email: email, password: password);
await WriteCache.setString(key: "cache", value: userId!);
} catch (e) {
print(e); //Do something if error occurs
}
}
//Splash view
import 'dart:async';
import 'package:cache_manager/cache_manager.dart';
import 'package:flutter/material.dart';
class SplashView extends StatefulWidget {
@override
_SplashViewState createState() => _SplashViewState();
}
class _SplashViewState extends State<SplashView> {
Future initiateCache() async {
return CacheManagerUtils.conditionalCache(
key: "cache",
valueType: ValueType.StringValue,
actionIfNull: () {
Navigator.of(context).pushNamed(AppRoutes.LoginRoute);
},
actionIfNotNull: () {
Navigator.of(context).pushNamed(AppRoutes.HomeRoute);
});
}
@override
void initState() {
Timer(Duration(seconds: 1), initiateCache);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("demo app"),
),
);
}
}
//Home view
import 'package:cache_manager/core/cache_manager_utils.dart';
import 'package:cache_manager/core/delete_cache_service.dart';
import 'package:flutter/material.dart';
class HomeView extends StatefulWidget {
@override
_HomeViewState createState() => _HomeViewState();
}
class _HomeViewState extends State<HomeView> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: CacheManagerUtils.cacheTextBuilder(
textStyle: TextStyle(color: Colors.white), cacheKey: "cache"),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
DeleteCache.deleteKey(
"cache", Navigator.of(context).pushNamed(AppRoutes.LoginRoute));
},
),
);
}
}
โคLoved the utility? Donate here.
๐Want to learn more about Flutter? Checkout this out!
๐ฅDM me on Instagram for doubts Follow here
๐ Bugs/Requests #
If you encounter any problems feel free to open an issue. If you feel the library is missing a feature, please raise a ticket on Github and I'll look into it. Pull request are also welcome.