我正在用Flutter和Firebase开发一个应用程序。
我想将_id永久存储在SharedPreferences中。
因此,我照顾了它,但我的代码根本不起作用。它总是抛出错误:
类型"Future"不是类型"String"的子类型
这是我的代码:
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;
}
您对返回字符串使用了错误的方法,因此必须将String getID()
更改为Future<String> getID()
。你可以这样使用。
getValue()async{
String value = await getID();
}
当您使用async时,请始终尝试添加Future。
类似:
Future<returnType> methodName() async { }
在您的代码中尝试更改String getID(){ }
至Future<String>getID() async{ }