【问题标题】:How to save a bool favorite from list of object to Shared Preferences in Flutter如何将对象列表中的布尔收藏夹保存到 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);
 },

【问题讨论】:

    标签: list flutter boolean sharedpreferences favorites


    【解决方案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,因为内存访问是异步的
    猜你喜欢
    • 2020-08-12
    • 2020-10-31
    • 2021-10-02
    • 2022-01-15
    • 1970-01-01
    • 2018-02-06
    • 2017-01-22
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多