【问题标题】:Flutter shared_preferences getString() not returning a String?Flutter shared_preferences getString() 不返回字符串?
【发布时间】:2020-01-07 17:53:19
【问题描述】:

我对 Flutter 还很陌生,现在我正在尝试使用它的 shared_preferences 包来保存字符串并取回它。

现在,我相信getString 应该返回一个字符串(至少 VS Code 是这样告诉我的),所以我声明了一个返回字符串的包装函数:

String getName() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('name');
}

但是,这不会编译,并出现错误(注意'String 缺少引号):

无法从方法“getName”返回“String”类型的值,因为它的返回类型为“String”

如果我完全删除返回类型,错误就会消失:

getName() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('name');
}

谁能解释这里发生了什么? getString 究竟返回了什么?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你必须返回一个Future,因为你的是一个异步函数

    Future<String> getName() async {
      final prefs = await SharedPreferences.getInstance();
      return prefs.getString('name');
    }
    

    【讨论】:

      【解决方案2】:

      好的,我现在知道我缺少什么了:我的函数是异步的!

      事实证明,Dart 中的异步函数的返回类型为 Future

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-26
        • 1970-01-01
        • 2020-02-28
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多