在我们使用条件 return 答案的未来函数中使用 // ignore: missing_return 是个好主意吗?

is it a good idea to use // ignore: missing_return in an future fuction where we are using conditioning to return answer?

作为问题状态,在我们使用条件 return 回答的未来函数上方使用 // ignore: missing_return 是个好主意吗?

例如

 Future<UserModel> getProfile() async {
    if (_user == null) {
      _user = await Provider.of<UserProvider>(context).fetchUserProfile();
    } else {
      return _user;
    }
  }

warning 如下所示被抑制:

// ignore: missing_return
  Future<UserModel> getProfile() async {
    if (_user == null) {
      _user = await Provider.of<UserProvider>(context).fetchUserProfile();
    } else {
      return _user;
    }
  }

这是一个好的做法还是我应该对给定的代码做些什么修改...

不,那很糟糕。有人告诉您有问题,但您没有解决问题,而是让他们闭嘴。你的编译器不会把它当回事,但它仍然不是编写高质量代码的好方法。

缺少一个 return。在其他语言中,这将是编译器错误,而不是警告。您的代码有缺陷。你需要修复它。

你说你的方法 return 是 UserModel 并且如果 _user 为 null,它很简单。

因为我不知道你想要发生什么,所以我只能提出建议。我想您希望此方法 return 用户并在尚未加载时加载它。所以这将是你这样做的正确方法:

Future<UserModel> getProfile() async {
    if (_user == null) {
      _user = await Provider.of<UserProvider>(context).fetchUserProfile();
    } 
      
    return _user;
}

这样的警告实际上可以帮助您编写干净的 error-free 代码。永远不要试图忽略它们,尝试通过理解来解决它们。

您的函数 getProfile() 期望 Future<UserModel> 作为其 return 类型。

是的,您在 else 条件下 returning UserModel,但如果条件 (_user == null) 为真,您不会 returning 函数中的任何内容.

根据您的用例,您可以这样做,

 Future<UserModel> getProfile() async {
    if (_user == null) {
      /// sets the _user if its null
      _user = await Provider.of<UserProvider>(context).fetchUserProfile();
    } 

    ///returns the _user
    return _user;
   
  }