list - 如何将对象列表中的布尔收藏夹保存到 Flutter 中的共享首选项
问题描述
我有一个我想要的项目列表,如果我点击其中任何一个,他的 bool 最喜欢的等于 true 使用共享首选项。在更多详细信息中,我有一个带有 bool 最喜欢属性的对象列表。我想将此布尔值存储到共享首选项..
型号类:
class ZekrModel {
final String zekrTitle;
final String zekrImage;
final String zekrCat;
final Widget screenWidget;
bool isFav;
bool toggleDone() {
isFav = !isFav;
}
}
提供者类:
class ZekrProvider with ChangeNotifier{
List<ZekrModel> _zekrList = [
ZekrModel(
zekrTitle: 'أذكار المساء',
zekrImage: 'assets/images/sunset.png',
zekrCat: 'Azkar',
screenWidget: AlmasaaScreen(),
),
ZekrModel(
zekrTitle: 'أذكار الصباح',
zekrImage: 'assets/images/sunrise.png',
zekrCat: 'Azkar',
screenWidget: AlsabahScreen(),
)
];
void updateFav(ZekrModel zekrModel) {
zekrModel.toggleDone();
notifyListeners();
}
List<ZekrModel> get favZekr {
return _zekrList.where((element) => element.isFav).toList();
}
}
用户界面中的用法:
onTap: (){
value.updateFav(zekrIndex);
},
解决方案
导入包:
import 'package:shared_preferences/shared_preferences.dart';
您的小部件:
class _LoginState extends State<Login> {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
然后,只需在任何方法中调用这样的方法来设置布尔值:
final SharedPreferences prefs = await _prefs;
prefs.setBool('logado', true);
prefs.setString('logado_email', people.email);
如果您想稍后检索它:
bool status = prefs.getBool('logado') ?? false;
推荐阅读
- laravel - Laravel 会话 - 无法获取会话值
- c++ - 我如何在 Visual C++ 的代码中包含 if else 问题
- html - 导航栏透明,直到在 Angular 上滚动
- javascript - js,ecmascript 6 箭头函数的问题不起作用,是的,我确实声明了它
- mysql - 根据条件更新 MySQL 中的字段
- javascript - 我是一个初学者 js 编码器,试图与计算机对手进行乒乓球比赛,但球直接穿过桨
- javascript - 在 useEffect 中设置状态然后访问它的属性
- c++ - 在 Rcpp 中使用 OptimLib 时出错
- scala - Scala 特征和继承
- vb.net - 如何使用 vb.net 删除 INI 文件的一部分中的一行?