使用 Flutter 永久存储数据

Posted

技术标签:

【中文标题】使用 Flutter 永久存储数据【英文标题】:Storing a data permanent with Flutter 【发布时间】:2021-06-12 13:11:24 【问题描述】:

我正在使用 Flutter 和 Firebase 开发一个应用程序。

我想用 SharedPreferences 永久存储 _id。

因此,我照顾它,但我的代码根本不起作用。它总是抛出错误:

类型“未来”不是类型“字符串”的子类型

这是我的代码:

class Profile with ChangeNotifier 
  String _id;
  void setName(String name) 
    const url =
        'myurl';
    http
        .post(url, body: json.encode('name': name, 'description': name))
        .then((response) 
      _id = json.decode(response.body)['name'];
    );
    addID();
  

  Future<void> updateName(String name, String id) async 
    String url =
        'myurl';
    await http.patch(url,
        body: json.encode('name': 'Ein Titel', 'description': name));
  

这是我使用 SharedPrefs 的方法:

String getID() 
    return getIDOffline();
  

  addID() async 
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('id', _id);
  

  getIDOffline() async 
    SharedPreferences prefs = await SharedPreferences.getInstance();
    //Return String
    String stringValue = prefs.getString('id');
    return stringValue;
  

【问题讨论】:

【参考方案1】:

当您使用异步时,请始终尝试添加 Future。

喜欢:

 Future<returnType> methodName() async  

在您的代码中尝试更改 String getID() Future&lt;String&gt;getID() async

【讨论】:

【参考方案2】:

您使用了错误的返回字符串方法,因此您必须将String getID() 更改为Future&lt;String&gt; getID()。你可以这样使用。

getValue()async
String value = await getID();

【讨论】:

以上是关于使用 Flutter 永久存储数据的主要内容,如果未能解决你的问题,请参考以下文章

永久存储数据的方法[关闭]

永久数据存储 Azure VM

如何仅使用 iOS 5+ 和 Cordova 3.5 在本地永久存储数据文件?

Flutter 中如何使用 Hive 存储数据

使用 Flutter 时我都有哪些存储数据的选项? (iOS和Android)[关闭]

flutter SharedPreferences数据存储