Flutter缓存管理插件flutter_hi_cache_c3的使用
Flutter缓存管理插件flutter_hi_cache_c3的使用
flutter_hi_cache
flutter_hi_cache_c3
是一个基于 shared_preferences
的缓存管理器。它可以在 iOS、Android 和 Web 上工作。
内容
示例
开始使用
HiCache.getInstance().setString("cache_key", "cache_value");
HiCache.getInstance().get("cache_key");
贡献
欢迎提交问题。请附上你的bug截图和代码片段。最快解决问题的方法是在其中一个示例中重现问题。
欢迎提交 Pull Requests。如果你想改变API或进行重大更改,最好先创建一个问题并讨论。
完整示例Demo
以下是一个完整的示例,展示了如何使用 flutter_hi_cache_c3
插件来管理缓存。
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// 这是你的应用的主题。
//
// 尝试一下:运行你的应用(使用 "flutter run")。你会看到应用有一个紫色的工具栏。然后,在不退出应用的情况下,尝试将颜色方案中的seedColor更改为Colors.green
// 并触发热重载(保存更改或按热重载按钮在支持Flutter的IDE中,或在命令行启动应用时按 "r")。
//
// 注意:计数器没有重置回零;应用程序状态在重载时不丢失。要重置状态,请使用热重启。
//
// 这适用于代码,而不仅仅是值:大多数代码更改可以通过简单的热重载来测试。
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
// home: const MyHomePage(title: 'Flutter Demo Home Page'),
home: FutureBuilder<dynamic>(
future: HiCache.preInit(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
var widget = snapshot.connectionState == ConnectionState.done
? const MyHomePage(title: 'HiCache Demo')
: const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
return widget;
}),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
// 这个小部件是你的应用的主页。它是有状态的,意味着它有一个状态对象(在下面定义),该状态对象包含影响其外观的字段。
// 这个类是状态的配置。它保存了由父级(在这个例子中是App小部件)提供的值(在这种情况下是标题)并用于状态的构建方法。小部件子类中的字段总是标记为"final"。
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
int showResult = 0;
static const COUNT_KEY = 'key_count';
void _incrementCounter() {
HiCache.getInstance().setInt(COUNT_KEY, ++_counter);
setState(() {
showResult = HiCache.getInstance().get<int>(COUNT_KEY);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
// 这个方法每次调用setState都会被重新运行,比如上面的_incrementCounter方法。
//
// Flutter框架已经优化了重建方法,使其变得快速,因此你可以重新构建任何需要更新的东西,而不是个别更改小部件实例。
return Scaffold(
appBar: AppBar(
// 尝试一下:将这里的颜色更改为特定颜色(例如Colors.amber)并触发热重载以查看AppBar的颜色变化,而其他颜色保持不变。
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
// 这里我们从MyHomePage对象中获取值,该对象是由App.build方法创建的,并将其用于设置我们的appbar标题。
title: Text(widget.title),
),
body: Center(
// Center是一个布局小部件。它接受一个子元素并将其定位在父元素的中间。
child: Column(
// Column也是一个布局小部件。它接受一个子元素列表并垂直排列它们。默认情况下,它水平调整自己的大小以适应其子元素,并尽可能高。
//
// Column有几个属性可以控制其自身大小和子元素的位置。这里我们使用mainAxisAlignment来垂直居中子元素;主轴是垂直的(交叉轴是水平的)。
//
// 尝试一下:启用调试绘制(选择IDE中的"切换调试绘制"操作,或按控制台中的 "p" 键),以查看每个小部件的线框。
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'你点击按钮的次数:',
),
Text(
'$showResult',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: const Icon(Icons.add),
), // 这个尾随逗号使自动格式化更美观。
);
}
}
更多关于Flutter缓存管理插件flutter_hi_cache_c3的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter缓存管理插件flutter_hi_cache_c3的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_hi_cache_c3
是一个用于 Flutter 应用的缓存管理插件,它可以帮助你在应用中存储和读取缓存数据。使用这个插件,你可以轻松地在本地存储键值对数据、对象等。
以下是如何使用 flutter_hi_cache_c3
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_hi_cache_c3
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_hi_cache_c3: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化缓存
在使用缓存之前,你需要初始化缓存管理器。通常你可以在应用的 main
函数中进行初始化:
import 'package:flutter/material.dart';
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await HiCache.preInit(); // 预初始化缓存
runApp(MyApp());
}
3. 使用缓存
初始化之后,你就可以在应用中使用缓存了。以下是一些常见的操作:
存储数据
你可以使用 HiCache.getInstance()
来获取缓存实例,然后使用 setString
, setInt
, setBool
, setDouble
, setObject
等方法来存储数据。
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void storeData() {
var cache = HiCache.getInstance();
// 存储字符串
cache.setString('key_string', 'Hello, World!');
// 存储整数
cache.setInt('key_int', 123);
// 存储布尔值
cache.setBool('key_bool', true);
// 存储对象
cache.setObject('key_object', {'name': 'John', 'age': 30});
}
读取数据
你可以使用 getString
, getInt
, getBool
, getDouble
, getObject
等方法来读取缓存中的数据。
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void readData() {
var cache = HiCache.getInstance();
// 读取字符串
String? stringValue = cache.getString('key_string');
print('String Value: $stringValue');
// 读取整数
int? intValue = cache.getInt('key_int');
print('Int Value: $intValue');
// 读取布尔值
bool? boolValue = cache.getBool('key_bool');
print('Bool Value: $boolValue');
// 读取对象
Map<String, dynamic>? objectValue = cache.getObject('key_object');
print('Object Value: $objectValue');
}
删除数据
你可以使用 remove
方法来删除缓存中的某个键值对。
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void deleteData() {
var cache = HiCache.getInstance();
// 删除某个键值对
cache.remove('key_string');
}
清空缓存
你可以使用 clear
方法来清空所有缓存数据。
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void clearCache() {
var cache = HiCache.getInstance();
// 清空所有缓存
cache.clear();
}
4. 其他注意事项
flutter_hi_cache_c3
插件是基于shared_preferences
实现的,因此它的存储方式与shared_preferences
类似,适合存储小量的数据。- 如果你需要存储大量的数据或复杂的结构,可能需要考虑使用其他存储方式,如 SQLite 或文件存储。
5. 示例代码
以下是一个完整的示例代码,展示了如何使用 flutter_hi_cache_c3
插件进行缓存管理:
import 'package:flutter/material.dart';
import 'package:flutter_hi_cache_c3/flutter_hi_cache_c3.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await HiCache.preInit();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Cache Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CacheDemo(),
);
}
}
class CacheDemo extends StatefulWidget {
[@override](/user/override)
_CacheDemoState createState() => _CacheDemoState();
}
class _CacheDemoState extends State<CacheDemo> {
var cache = HiCache.getInstance();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Cache Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
cache.setString('key_string', 'Hello, World!');
cache.setInt('key_int', 123);
cache.setBool('key_bool', true);
cache.setObject('key_object', {'name': 'John', 'age': 30});
},
child: Text('Store Data'),
),
ElevatedButton(
onPressed: () {
String? stringValue = cache.getString('key_string');
int? intValue = cache.getInt('key_int');
bool? boolValue = cache.getBool('key_bool');
Map<String, dynamic>? objectValue = cache.getObject('key_object');
print('String Value: $stringValue');
print('Int Value: $intValue');
print('Bool Value: $boolValue');
print('Object Value: $objectValue');
},
child: Text('Read Data'),
),
ElevatedButton(
onPressed: () {
cache.remove('key_string');
},
child: Text('Delete Data'),
),
ElevatedButton(
onPressed: () {
cache.clear();
},
child: Text('Clear Cache'),
),
],
),
),
);
}
}