首页 文章

Dart编程从另一个类调用该方法

提问于
浏览
1

我需要一些帮助,我在另一个类中尝试这个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;
  }

3 回答

  • 0

    那里你有一些安静的错误 . 1.在第一个代码示例中,当您返回字符串的代码时,您将返回null future . 这没有任何意义 . 2.在您的第二个代码示例中,您只返回一个字符串,而您的函数是异步函数,因此它可能会在您使用的任何IDE上显示另一个错误 . 像 - >你需要回归未来 . 所以它应该是前面回答中提到的Future .

    Future<String>
    
    • 创建一个String var就好了

    String userId =“”;

    在你的课堂内getdetails . 然后在你的函数_355602中执行此操作,假设您已经在 userid 键中使用了一些用于共享首选项的值 .

    getuserid() async{
    SharedPreferences pref = await SharedPreferences.getInstance(); 
    String u = pref.getString('userid'); 
    userId = u ;
    }
    

    现在在同一个类中创建另一个函数只是为了简单明了 .

    String userdetails(){
    return userId;
    }
    

    现在在 class/widget(stateful/stateless) 你想要获得userId这样做: -

    像这样创建该类的对象

    getdetails g ;
    

    现在调用这样创建的函数..

    g.getuserid().then((){
    String ID = g.userdetails();
    });
    

    我在这里做的是首先创建一个函数,它获取您的值并将其存储到局部变量中,然后调用另一个函数,以便在从共享的prefs类检索该值并将其存储到该局部变量时获取该局部变量的值使用相同的对象,即为什么我使用 .then((){}) 函数我希望它有所帮助 .

  • 1

    您需要将函数的返回类型定义为 Future<String>

    Future<String> getuserid() async {
     ....
    }
    
  • 0

    删除null并在Future ... Future之后放置String

相关问题