如何在Flutter Secure Storage中存储非字符串类型的数据
Flutter Secure Storage 非字符串类型存储说明
核心结论
Flutter Secure Storage 原生仅支持字符串类型的键值对存储,无法直接写入布尔、数值、自定义对象等非字符串类型数据,但可以通过类型转换的方式间接实现任意类型数据的安全存储。
布尔值(登录状态)适配方案
针对登录状态这类布尔值场景,直接做字符串互转即可:
- 存储时调用布尔值的
toString()方法,将true转为"true"、false转为"false"存入 - 读取时将取出的字符串与
"true"做全等判断,即可得到对应的布尔值
代码示例
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; final _storage = const FlutterSecureStorage(); // 存储登录状态 Future<void> setLoginStatus(bool isLoggedIn) async { await _storage.write( key: 'user_login_status', value: isLoggedIn.toString(), ); } // 读取登录状态 Future<bool> getLoginStatus() async { final String? statusStr = await _storage.read(key: 'user_login_status'); // 无存储记录时默认返回未登录,可根据业务调整默认值 return statusStr == 'true'; }
复杂类型扩展方案
如果需要存储列表、自定义对象等复杂结构,可借助dart:convert先将数据序列化为JSON字符串,读取时再反序列化回原数据类型即可。
内容的提问来源于stack exchange,提问作者Shubham mogarkar
相关产品推荐
相关产品推荐

