类型'Future <dynamic>'不是类型'List <CloseObservations>'的子类型

时间:2019-11-03 10:01:53

标签: asynchronous flutter dart future

我对dart很陌生,我正在用一个函数来解决问题,该函数假定返回一个List<CloseObservations>而不是一个Future<dynamic>,但我不知道为什么我的函数不返回正确的类型。

这是我的功能:

 getData(BuildContext context) async {
    List<CloseObservations> closeObservationData = new List();
    WorkSiteState state = BlocProvider.of<WorkSiteBloc>(context).state;
    List<Stage> stages = state.workSites[state.currentIndex].stages;
    for (Stage stage in stages) {
      String stageName = stage.name;
      int closeNumber;
      try {
        for (Plan plan in stage.plans) {
          for (Observation observation in plan.observations) {
            if (!observation.open) {
              closeNumber++;
            }
          }
        }
      } finally {
        closeObservationData.add(CloseObservations(stageName, closeNumber));
      }
    }

    return closeObservationData;
  }

我希望对我的问题的解释清楚,即使不能告诉我。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您应明确指定函数的返回类型:

Future<List<CloseObservations>> getData(BuildContext context) async {
...

异步函数总是返回 Future (也有 FutureOr ,但是您不应该返回它-这是一种不好的做法)。如果不需要它返回 Future ,则可以通过删除 async 关键字并将返回类型更改为 List 使其同步。