Flutter中如何在SharedPreferences中设置与获取字符串列表
SharedPreferences本身提供了getStringList()和setStringList()方法,正好适配字符串列表的存储需求,直接基于这两个方法实现setter并完善getter即可:
完整代码实现
// 先定义对应的存储key常量(如果未定义的话) const String keyUsername = 'username'; const String keyAliases = 'aliases'; class SharedPreferencesHelper { static SharedPreferences? _preferences; Future<void> init() async { _preferences ??= await SharedPreferences.getInstance(); } String get username => _preferences?.getString(keyUsername) ?? ''; set username(String value) { _preferences?.setString(keyUsername, value); } // 完善getter:返回非空列表,避免调用方处理空值 List<String> get aliases => _preferences?.getStringList(keyAliases) ?? []; // 实现setter:直接调用SharedPreferences的列表存储方法 set aliases(List<String> value) { _preferences?.setStringList(keyAliases, value); } }
关键说明
- Getter优化:将原本返回
List<String>?的逻辑改为?? [],确保无论SharedPreferences中是否有数据,调用方拿到的都是非空的字符串列表,减少空安全判断的冗余代码。 - Setter实现:直接接收
List<String>类型参数,调用setStringList完成存储,逻辑和单个字符串的setter保持一致。 - 注意事项:必须先调用
init()方法完成SharedPreferences实例初始化,否则_preferences为null,所有读写操作都不会生效。
内容的提问来源于stack exchange,提问作者Yunnane
相关产品推荐
相关产品推荐

