当子部件没有参数来改变其布局时,如何使子部件展开以填充堆栈内的父容器?
How do I make a child widget expand to fill a parent container inside of a stack when the child has no parameters to alter its layout?
我正在构建纸牌游戏并使用火焰从精灵中拉出纸牌 sheet。问题是我设置了容纳 SpriteWidget 的容器的宽度和高度,但 SpriteWidget 扩展到容器的宽度或高度,但不是两者。我希望它 expand/stretch 与父容器大小相同。不幸的是,SpriteWidget 确实没有可用于更改其大小的参数。
我花了几个小时在互联网上搜索解决方案并尝试了一些小部件,包括 FittedBox
、Flex
、Positioned.fill
等,但我无法以达到预期的效果。当 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(),
);
}
}
实际上这是不可能的,SpriteWidget
被设计为只要它适合其父级上可用的最小尺寸就可以扩展,你可以查看它的源代码here。
这样做是为了当 Sprite 父级的宽高比与 Sprite 的宽高比不同时,Sprite 不会变形。
如果您在某个用例中希望 Sprite 有意变形,请在 Flame 存储库上打开一个问题来解释该案例,我们可以尝试查看它。
我正在构建纸牌游戏并使用火焰从精灵中拉出纸牌 sheet。问题是我设置了容纳 SpriteWidget 的容器的宽度和高度,但 SpriteWidget 扩展到容器的宽度或高度,但不是两者。我希望它 expand/stretch 与父容器大小相同。不幸的是,SpriteWidget 确实没有可用于更改其大小的参数。
我花了几个小时在互联网上搜索解决方案并尝试了一些小部件,包括 FittedBox
、Flex
、Positioned.fill
等,但我无法以达到预期的效果。当 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(),
);
}
}
实际上这是不可能的,SpriteWidget
被设计为只要它适合其父级上可用的最小尺寸就可以扩展,你可以查看它的源代码here。
这样做是为了当 Sprite 父级的宽高比与 Sprite 的宽高比不同时,Sprite 不会变形。
如果您在某个用例中希望 Sprite 有意变形,请在 Flame 存储库上打开一个问题来解释该案例,我们可以尝试查看它。