Iterable.generate: Iterable <Future <String>> выдает исключение

Просто играю с Дротиком: Вы знаете, почему это не работает? Я просто хочу иметь возможность пройти через Iterable of Futures.

import 'dart:async';

Iterable<Future<String>> getFutureIterataleData(int sec) {
  var iterable = new Iterable.generate(5);
  iterable.map(
    (n) =>  Future<String>((){return "Hello";})).iterator;
  return iterable;
  }

main() {
  Stream<String> streamS = new Stream.fromFutures(getFutureIterataleData(5));
  streamS.listen((data) {
    print(data);
  });

  print("Done");
}

Это вызывает следующее исключение:

Exception has occurred.
_TypeError (type '_GeneratorIterable<dynamic>' is not a subtype of type 'Iterable<Future<String>>')
0
0
182
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

метод карты возвращает новый ленивый Iterable с элементами, которые создаются путем вызова аргумента функции для каждого элемента Iterable в порядке итерации. Вместо этого вы возвращаете оригинальный iterable.

Также вы должны возвращать итератор, а не итератор, поэтому не применяйте геттер iterator.

Iterable<Future<String>> getFutureIterataleData(int sec) {
  var iterable = new Iterable.generate(5);

  return iterable.map(
    (n) =>  Future<String>((){return "Hello";}));

  }

Другие вопросы по теме