Flutter shared_preferences getString() not returning a Strin



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

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

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

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

无法从方法"getName"返回类型为"字符串"的值,

因为它的返回类型为"字符串">

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

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

谁能解释一下这里发生了什么?getString实际上返回了什么?

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

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

好的,我现在弄清楚了我错过了什么:我的函数是异步的!

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