Flutter加密共享偏好设置插件encrypted_shared_preferences的使用
Flutter加密共享偏好设置插件encrypted_shared_preferences
的使用
此插件用于将共享偏好设置以加密的形式存储。读取时自动解密。你可以与常规的共享偏好设置并行使用。
使用
实例化类
EncryptedSharedPreferences encryptedSharedPreferences = EncryptedSharedPreferences();
保存值
encryptedSharedPreferences.setString('sample', 'Hello, World!').then((bool success) {
if (success) {
print('success');
} else {
print('fail');
}
});
获取值
encryptedSharedPreferences.getString('sample').then((String value) {
print(value); /// Prints Hello, World!
});
删除值
encryptedSharedPreferences.remove('sample').then((bool success) {
if (success) {
print('success');
} else {
print('fail');
}
});
清除所有值
/// 清除所有值,包括你用常规共享偏好设置保存的值。
encryptedSharedPreferences.clear().then((bool success) {
if (success) {
print('success');
} else {
print('fail');
}
});
重新加载
encryptedSharedPreferences.reload();
自定义SharedPreferences
实例
/// 可以传递一个自定义的SharedPreferences实例(例如:更新版的SharedPreferences)
final prefs = await SharedPreferences.getInstance();
EncryptedSharedPreferences encryptedSharedPreferences = EncryptedSharedPreferences(prefs: prefs);
访问内部的SharedPreferences
实例
// 可以访问内部的SharedPreferences实例来调用未被常规EncryptedSharedPreferences公开的方法
SharedPreferences instance = await encryptedSharedPreferences.getInstance();
int counter = 1;
/// 访问SharedPreferences的setInt方法
await instance.setInt('counter', counter);
加密模式
默认模式为SIC AESMode.sic,可以通过名为mode
的参数覆盖它:
EncryptedSharedPreferences encryptedSharedPreferences = EncryptedSharedPreferences(mode: AESMode.cbc);
支持的模式有:
- CBC
<code>AESMode.cbc</code>
- CFB-64
<code>AESMode.cfb64</code>
- CTR
<code>AESMode.ctr</code>
- ECB
<code>AESMode.ecb</code>
- OFB-64/GCTR
<code>AESMode.ofb64Gctr</code>
- OFB-64
<code>AESMode.ofb64</code>
- SIC
<code>AESMode.sic</code>
完整示例
以下是一个完整的示例代码,演示如何在Flutter应用中使用encrypted_shared_preferences
插件。
import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Encrypted Shared Preferences Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final EncryptedSharedPreferences encryptedSharedPreferences = EncryptedSharedPreferences();
final _formKey = GlobalKey<FormState>();
final myController = TextEditingController();
String value = '';
[@override](/user/override)
void initState() {
super.initState();
init();
}
init() async {
encryptedSharedPreferences.getString('sample').then((String _value) {
setState(() {
value = _value;
});
});
}
[@override](/user/override)
void dispose() {
myController.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Encrypted Shared Preferences Demo Page'),
),
body: Form(
key: _formKey,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
TextFormField(
decoration:
InputDecoration(hintText: 'Type text here and save'),
controller: myController,
validator: (value) {
if (value != null && value.isEmpty) {
return 'Please enter some text';
}
return null;
}),
Text('Current value: $value')
],
),
)),
floatingActionButton: FloatingActionButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
encryptedSharedPreferences
.setString('sample', myController.text)
.then((bool success) {
if (success) {
print('success');
encryptedSharedPreferences
.getString('sample')
.then((String _value) {
setState(() {
value = _value;
});
});
} else {
print('fail');
}
});
}
},
tooltip: 'Save',
child: Icon(Icons.save),
),
);
}
}
更多关于Flutter加密共享偏好设置插件encrypted_shared_preferences的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加密共享偏好设置插件encrypted_shared_preferences的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
encrypted_shared_preferences
是一个 Flutter 插件,用于在应用程序中安全地存储和获取加密的共享偏好设置。它基于 shared_preferences
插件,并在其基础上增加了加密功能,以确保敏感数据的安全性。
安装
首先,在你的 pubspec.yaml
文件中添加 encrypted_shared_preferences
依赖:
dependencies:
flutter:
sdk: flutter
encrypted_shared_preferences: ^1.0.0+1
然后运行 flutter pub get
来安装依赖。
使用
1. 初始化 EncryptedSharedPreferences
在使用 encrypted_shared_preferences
之前,你需要初始化它。通常,你可以在 main
函数中初始化:
import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 EncryptedSharedPreferences
final encryptedPrefs = EncryptedSharedPreferences();
await encryptedPrefs.init();
runApp(MyApp(encryptedPrefs: encryptedPrefs));
}
2. 存储数据
你可以使用 setString
, setInt
, setBool
, setDouble
, setStringList
等方法来存储加密的数据:
class MyApp extends StatelessWidget {
final EncryptedSharedPreferences encryptedPrefs;
MyApp({required this.encryptedPrefs});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Encrypted Shared Preferences Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 存储加密的字符串
await encryptedPrefs.setString('key1', 'sensitive_data');
print('Data stored securely');
},
child: Text('Store Data'),
),
),
),
);
}
}
3. 获取数据
你可以使用 getString
, getInt
, getBool
, getDouble
, getStringList
等方法来获取解密的数据:
class MyApp extends StatelessWidget {
final EncryptedSharedPreferences encryptedPrefs;
MyApp({required this.encryptedPrefs});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Encrypted Shared Preferences Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 获取解密的字符串
String? value = await encryptedPrefs.getString('key1');
print('Retrieved data: $value');
},
child: Text('Retrieve Data'),
),
),
),
);
}
}
4. 删除数据
你可以使用 remove
方法来删除存储的加密数据:
class MyApp extends StatelessWidget {
final EncryptedSharedPreferences encryptedPrefs;
MyApp({required this.encryptedPrefs});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Encrypted Shared Preferences Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 删除存储的加密数据
await encryptedPrefs.remove('key1');
print('Data removed');
},
child: Text('Remove Data'),
),
),
),
);
}
}