Тип аргумента «Список<Будущее>» не может быть присвоен типу параметра » Список>»

#flutter #asynchronous #flame

Вопрос:

 class MyGame extends BaseGame with HasTapableComponents {
  SpriteAnimationComponent girl = SpriteAnimationComponent();

  MyGame();
  @override
  Future<void> onLoad() async {
    final sprites = [0, 1, 2,3,4,5,6,7,8,9]
      .map((i) async => await Sprite.load('Attack__00$i.png'))
      .toList();
    girl = SpriteAnimationComponent(
      animation: SpriteAnimation.spriteList(sprites, stepTime: 0.01),
      size: Vector2.all(100) 
    );
    add(girl);
    print(size);
  }
}
 

Следуя документам github для flutter flame для реализации компонента spriteanimation, animation: SpriteAnimation.spriteList(sprites, ...) . Проблема здесь, как я заметил, заключается в том, что sprites это будущий список спрайтов, в то время как spriteList требует список спрайтов. Это проблема в документах, или я где-то ошибаюсь?

Ответ №1:

Вам нужно подождать, пока список будущих спрайтов материализуется, вот так:

 final sprites = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      .map((i) => Sprite.load('Attack__00$i.png'));
final animation = SpriteAnimation.spriteList(
  await Future.wait(sprites),
  stepTime: 0.01,
);
girl = SpriteAnimationComponent(
  animation: animation,
  size: Vector2.all(100) 
);
add(girl);
 

Правка: Я вижу, что в документах что-то не так, я их обновлю.