Flutter 缓存文本变量 shared_preferences插件配置
1.载入插件
flutter pub add shared_preferences
2.初始化 在main.dart 入口文件配置
void main() async {
WidgetsFlutterBinding.ensureInitialized(); //初始化缓存
runApp(const MyApp());
}3.设置权限(必须)
未设置测报错:[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
【Android】
在AndroidManifest.xml文件中添加了这些权限:
路径1安卓配置:android/app/src/main/AndroidManifest.xml
路径2安卓配置:android/app/src/profile/AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
【IOS】
在ios/Podfile目录文件中添加了这些权限:
路径IOS配置:ios/Podfile
添加如下配置:(文件默认存在,但使用#注释掉了,去掉注释符即可)
platform :ios, '11.0'
4.运行重载权限配置
终端运行:
sudo pod install
5.重新运行项目
6.插件属性使用:
ElevatedButton(
onPressed: () async {
final prefs = await SharedPreferences.getInstance(); //异步引用
await prefs.setString('name', 'John'); //存储文本
print(prefs.getString('name')); //读取文本
await prefs.setInt('name', 123); //存储整型
print(prefs.getInt('name')); //读取
await prefs.setBool('name', true); //存储布尔
print(prefs.getBool('name')); //读取
await prefs.setDouble('name', 3.14159); //存储小数
print(prefs.getDouble('name')); //读取
await prefs.setStringList('name', ['1', '2']); //存储文本数组
print(prefs.getStringList('name')); //读取
prefs.remove('name'); //删除指定键
prefs.clear(); //清空整个缓存
},
child: Text("示例"),
),