тип 'Future <dynamic>' не является подтипом типа 'List <CloseObservations>' - PullRequest
0 голосов
/ 03 ноября 2019

Я очень новичок в дартс, и я сталкиваюсь с проблемой с функцией, которая предполагает возвращение 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 Ответ

1 голос
/ 03 ноября 2019

Вы должны явно указать тип возврата вашей функции:

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

Асинхронные функции всегда возвращают Future (есть также FutureOr , но вы не должны возвращатьэто - это плохая практика). Если вам не нужно возвращать Future , сделайте его синхронным, удалив ключевое слово async и изменив тип возврата на Список .

...