如何将对象列表中的布尔收藏夹保存到 Flutter 中的共享首选项
Posted
技术标签:
【中文标题】如何将对象列表中的布尔收藏夹保存到 Flutter 中的共享首选项【英文标题】:How to save a bool favorite from list of object to Shared Preferences in Flutter 【发布时间】:2021-11-20 15:16:45 【问题描述】:我有一个我想要的项目列表,如果我点击其中任何一个,他的 bool 最喜欢的等于 true 使用共享首选项.. 更详细地说,我有一个带有 bool favorite 属性的对象列表。我想将此布尔值存储到共享首选项..
模型类:
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);
,
【问题讨论】:
【参考方案1】:导入包:
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;
【讨论】:
我知道语法,但我不知道我应该把这个特定的集团放在哪里!在类模型或提供者类或 ui 中?!你能在我的代码中告诉我吗? 别忘了这个元素在对象列表中 你应该把这个方法放在小部件范围之外。您在小部件的开头声明变量,然后您可以创建一个异步方法仅设置变量 bool,因为内存访问是异步的以上是关于如何将对象列表中的布尔收藏夹保存到 Flutter 中的共享首选项的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值
Flutter - 如何从 Firestore 中检索 ID 列表并在 GridView 中显示它们的项目?