0

我正在构建一个纸牌游戏并使用火焰从精灵表中拉出纸牌。问题是我设置了容纳 SpriteWidget 的 Container 的宽度和高度,但 SpriteWidget 扩展为容器的宽度或高度,但不能同时扩展。我希望它扩展/拉伸到与父容器相同的大小。不幸的是,SpriteWidget 确实没有可用于更改其大小的参数。

我花了几个小时在互联网上搜索解决方案并尝试了许多小部件,包括FittedBoxFlexPositioned.fill等,但我无法达到预期的效果。当 SpriteWidget 没有参数时,如何使 SpriteWidget 拉伸以填充其父级?

class _PlayerHandPortraitLayout
    extends WidgetView<PlayerHand, _PlayerHandController> {
  @override
  final state;

  const _PlayerHandPortraitLayout(this.state) : super(state);

  @override
  Widget build(BuildContext build) {
    return Stack(
      children: state.displayHand().asMap().entries.map((cardItem) {
        var index = cardItem.key;
        var card = cardItem.value;
        return Positioned(
          left: index * CARD_OVERLAP_OFFSET,
          child: Draggable<Container>(
            childWhenDragging: Container(),
            child: Container(
              color: Colors.purple,
              width: state.cardWidth,
              height: state.cardHeight,
              child: SpriteWidget(
                sprite: state.spriteImages[card.suite.index][card.value.index],
              ),
            ),
            feedback: Container(
              color: Colors.yellow,
              width: state.cardWidth,
              height: state.cardHeight,
              child: SpriteWidget(
                sprite: state.spriteImages[card.suite.index][card.value.index],
              ),
            ),
          ),
        );
      }).toList(),
    );
  }
}
4

1 回答 1

3

实际上这是不可能的,SpriteWidget只要它适合其父级可用的最小尺寸,就可以扩展,您可以在此处查看它的源代码。

这样做是为了让 Sprite 在其父项的纵横比与 Sprite 的比例不同时不会失真。

如果您有一个使用案例,您希望 Sprite 被故意扭曲,请在 Flame 存储库上打开一个问题来解释该案例,我们可以尝试查看它。

于 2020-11-18T16:43:02.227 回答