在flutter中的共享首选项中将数据存储为对象

sha*_*ini 5 flutter

我想将对象存储在共享首选项中,该共享首选项中包含一些字段,例如姓名,年龄,电话号码等。我不知道如何在颤动中将对象存储在共享首选项中。

Bho*_*han 20

您可以将对象存储在共享首选项中,如下所示:

SharedPreferences shared_User = await SharedPreferences.getInstance();
            Map decode_options = jsonDecode(jsonString);
            String user = jsonEncode(User.fromJson(decode_options));
            shared_User.setString('user', user);

SharedPreferences shared_User = await SharedPreferences.getInstance();
            Map userMap = jsonDecode(shared_User.getString('user'));
            var user = User.fromJson(userMap);

    class User {
      final String name;
      final String age;

      User({this.name, this.age});

      factory User.fromJson(Map<String, dynamic> parsedJson) {
        return new User(
            name: parsedJson['name'] ?? "",
            age: parsedJson['age'] ?? "");
      }

      Map<String, dynamic> toJson() {
        return {
          "name": this.name,
          "age": this.age
        };
      }
    }
Run Code Online (Sandbox Code Playgroud)

  • 请添加关于这段代码的作用的简短描述。 (4认同)

Gün*_*uer 9

保存前需要序列化为JSON,读取后反序列化

https://flutter.io/docs/development/data-and-backend/json详细信息


Vic*_*khe 9

将对象保存到共享首选项

SharedPreferences pref = await SharedPreferences.getInstance();
Map json = jsonDecode(jsonString);
String user = jsonEncode(UserModel.fromJson(json));
pref.setString('userData', user);
Run Code Online (Sandbox Code Playgroud)

从共享首选项中获取对象

SharedPreferences pref = await SharedPreferences.getInstance();
Map json = jsonDecode(pref.getString('userData'));
var user = UserModel.fromJson(json);
Run Code Online (Sandbox Code Playgroud)

您将需要导入以下提到的包

import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
Run Code Online (Sandbox Code Playgroud)

创建模型的最简单方法 按照这个答案-> /sf/answers/4109604411/

  • 这里的 jsonstring 是什么? (4认同)
  • @Diwakar它是您想要保存的json对象srig(通常是您想要保存从API获得的响应) (2认同)

Oma*_*sam 9

在这里搜索了很多文章后,你是

对于保存数据,必须转换为 JSON

 SharedPreferences prefs = await SharedPreferences.getInstance();

   Map<String, dynamic> user = 
    {'Usrname':'tom','Password':'pass@123'};

bool result = await prefs.setString('user', jsonEncode(user));
Run Code Online (Sandbox Code Playgroud)

对于 Gettin 数据,必须从 JSON 解转换

String userPref = prefs.getString('user');
     
Map<String,dynamic> userMap = jsonDecode(userPref) as Map<String, dynamic>;
Run Code Online (Sandbox Code Playgroud)