cache_manager
快取管理員用於儲存本機快取。快取管理員是用來在您的 Flutter 應用程式中將各種資料類型(JSON、字串、整數等)作為本機快取儲存的包裝器。
abhishh1/cache_manager open-source repository details.
{"sdk":"flutter"}—{"sdk":"flutter"}以下為英文專案原文快照,最新內容請造訪 GitHub。
A tidy utility to handle cache of your flutter app like a Boss. It provides support for both iOS and Android platforms (offcourse).
dependencies:
cache_manager: ^<latest_version>
🌟CacheManagerUtils.conditionalCache({key, valueType, actionIfNull, actionIfNotNull})
actionIfNull & actionIfNotNull are dynamic arguments used for Navigation through views, Rendering UI, Debugging values etc. The valueType refers to the datatype of cache (StringValue, BoolValue, IntValue, DoubleValue)🌟CacheManagerUtils.cacheTextBuilder(textStyle, cacheKey})
cacheKey is the key used to address the cache. The builder will return 'Invalid cache' if no cache is missing. Use textStyle to style the value of the 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.
🌟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.
🌟DeleteCache.deleteKey(key,[takeAction]) : Delete the cache and perform an action when cache is deleted(Optional).
//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));
},
),
);
}
}
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.