我正在使用 Flutter 进行应用开发。 我想在背景图像上叠加一个海报 ImageView ,就像下面的截图一样。 下面的代码片段可以做到这一点,但它还需要我根据海报的位置和背景图像的位置来定位所有其他小部件,包括电影标题、发布日期等,这在多个设备和方向上并不可靠。有解决这个问题的例子或建议吗?
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new PlatformAdaptiveAppBar(
title: new Text(widget.movie.title),
),
body: new Container(
constraints: new BoxConstraints.expand(),
child: new Stack(
children: <Widget>[
new Container(
child: new Image(
image: new AdvancedNetworkImage(
movieGridUtil.getUrlFromPath(widget.movie.backdrop_path,
MovieGridImageTypes.BACKDROP),
useMemoryCache: false,
useDiskCache: true)),
constraints: new BoxConstraints.expand(height: 250.0),
),
new Positioned(
left: 12.0,
top: 220.0,
child: new Image(
width: 100.0,
height: 150.0,
image: new AdvancedNetworkImage(
movieGridUtil.getUrlFromPath(widget.movie.poster_path,
MovieGridImageTypes.POSTER),
useMemoryCache: false,
useDiskCache: true),
)),
],
)),
);
}
最佳答案
创建堆栈
然后在 Stack 中添加 Column 并在没有海报的情况下进行完整布局。 然后作为 Stack 的第二个 Child,添加以下组合:
new Stack(
children: [
new Column(
children: _layout()
new Positioned(
top:200,
left:50,
child: _child // or optionaly wrap the child in FractionalTranslation
)]
)
)
https://stackoverflow.com/questions/50441745/