【问题标题】:This function has a return type of but doesn't end with a return statement此函数的返回类型为但不以 return 语句结尾
【发布时间】:2020-07-30 10:13:35
【问题描述】:

我收到警告:“此函数的返回类型为 'FutureOr',但不以 return 语句结尾。”

我的代码

  Future<List<Task>> getAllTasks() async {
    _readTaskList().then((dynamic value) {
      if (value != null) {
        final List<Task> tasks = <Task>[];
        final List<Task> _tasks = value as List<Task>;
        tasks.forEach((dynamic element) {
          _tasks.add(_convertFromJsonToTask(element as Map<String, dynamic>));
        });
        return tasks;
      } else {
        return null;
      }
    });
  }

【问题讨论】:

  • 看起来您没有发布函数的完整代码 sn-p。使用完整的 sn-p 更新您的问题。
  • 你贴的代码不完整,贴出你函数的完整代码
  • 对不起,我编辑了代码
  • 从您提供的代码中,我认为您应该在 _readTaskList() 方法之后添加一个返回值,例如空 List [] 或返回 null。

标签: flutter dart


【解决方案1】:

问题是_readTaskList() 的值在getAllTasks() 函数完全执行之前没有返回。只需将.then 替换为await 即可解决此问题

Future<List<Task>> getAllTasks() async {
    var value = await _readTaskList();
    if (value != null) {
      final List<Task> tasks = <Task>[];
      final List<Task> _tasks = value as List<Task>;
      tasks.forEach((dynamic element) {
        _tasks.add(_convertFromJsonToTask(element as Map<String, dynamic>));
      });
      return tasks;
    } else {
      return null;
    }
  }

【讨论】:

    【解决方案2】:

    尝试这样做:

    Future<List<Task>> getAllTasks() async {
      final dynamic value = await _readTaskList();
      
      if (value != null) {
        final List<Task> tasks = <Task>[];
        final List<Task> _tasks = value as List<Task>;
        tasks.forEach((dynamic element) {
          _tasks.add(_convertFromJsonToTask(element as Map<String, dynamic>));
        });
        return tasks;
      } else {
        return null;
      }
    }
    

    或者如果你真的想使用then:

    Future<List<Task>> getAllTasks() {
      return _readTaskList().then((dynamic value) {
        if (value != null) {
          final List<Task> tasks = <Task>[];
          final List<Task> _tasks = value as List<Task>;
          tasks.forEach((dynamic element) {
            _tasks.add(_convertFromJsonToTask(element as Map<String, dynamic>));
          });
          return tasks;
        } else {
          return null;
        }
      });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      相关资源
      最近更新 更多