在这里我需要一些帮助,我正在另一个类中尝试使用此getdetails.getuserid方法,但是我遇到了类似这样的错误type 'Future<dynamic>' is not a subtype of type 'String'
class getdetails {
Future<Null> getuserid() async {
SharedPreferences pref = await SharedPreferences.getInstance();
String userid = pref.getString('userid');
return userid;
}
}
如果我尝试像下面这样打电话,我会收到此错误Closure: () => dynamic from Function 'getuserid': static.() in dart
String getuserid() async {
SharedPreferences pref = await SharedPreferences.getInstance();
String userid = pref.getString('userid');
return userid;
}
答案 0 :(得分:1)
您需要将函数的返回类型定义为Future<String>
Future<String> getuserid() async {
....
}
答案 1 :(得分:0)
删除null并将字符串放在Future之后... 未来
答案 2 :(得分:0)
那里有一些错误,您很安静。 1.在第一个代码示例中,您将返回null的将来,而在代码中,您将返回string。那没有任何意义。 2.在您的第二个代码示例中,您的函数是一个异步函数时,您仅返回一个字符串,因此它的另一个错误甚至可能在您使用的任何IDE上显示给您。 ->这样的东西,您需要返回未来。所以应该是未来 如先前答案中所述。
Future<String>
创建一个字符串变量,只需说
String userId =“”;
在课堂上获取详细信息。
然后假设您已经在getuserid()
键中使用了一些用于共享首选项的值,就可以在函数userid
中进行此操作。
getuserid() async{
SharedPreferences pref = await SharedPreferences.getInstance();
String u = pref.getString('userid');
userId = u ;
}
现在在同一个类中创建另一个函数只是为了使事情变得简单明了。
String userdetails(){
return userId;
}
现在在您要获取用户ID的class/widget(stateful/stateless)
中,请执行以下操作:-
像这样创建该类的对象
getdetails g ;
现在调用这样创建的函数..
g.getuserid().then((){
String ID = g.userdetails();
});
我在这里要做的是首先创建一个函数,该函数获取您的值并将其存储到本地变量中,然后从共享的prefs类中检索到该值并将其存储到其中时,调用另一个函数以获取该本地变量的值使用相同对象的局部变量,即为什么我使用.then((){})
函数
希望对您有所帮助。