【发布时间】:2021-05-16 02:30:12
【问题描述】:
我正在制作一个颤动的网络。 我想在 CustomScrollView 中调整水平图像的大小。
例如:在产品详细信息页面上,我想将 600x400 宽度的顶部图像放置在布局的中心。
无论图像大小如何,水平扩展至 900 倍或更多都是一个问题。
代码:
class ServiceProductDetailPage extends StatelessWidget {
final String productId;
final ServiceProductModel product;
ServiceProductDetailPage({required this.product, required this.productId});
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Colors.transparent,
body: CustomScrollView(
slivers: [
SliverAppBar(
pinned: true,
expandedHeight: 50,
title: Text('Title'),
stretch: true,
backgroundColor: Colors.black,
),
SliverToBoxAdapter(child: _Body(context, _product)),
],
),
);
}
}
Widget _Body(BuildContext context, ServiceProductModel product) {
return Card(
child: ConstrainedBox(
constraints: BoxConstraints.tight(Size(900,400)
),
child: LoadingImage(url: product.image),
),
);
}
class LoadingImage extends StatelessWidget {
const LoadingImage({
Key? key,
required this.url,
}) : super(key: key);
final String url;
@override
Widget build(BuildContext context) {
return Image.network(
url,
fit: BoxFit.cover,
width: double.infinity,
height: double.infinity,
errorBuilder: (BuildContext c, Object err, StackTrace? stack) {
return const Center(child: Text('error'));},
frameBuilder: (BuildContext c, Widget image, int? frame, bool sync){
if (!sync && frame == null) {
return const Center(child: CircularProgressIndicator());
}
return image;
},
);
}
}
【问题讨论】:
-
您好。您能否更好地解释您正在努力实现的目标以及您目前正在获得什么?
-
我想创建一个中心宽度为 900x 的布局。当我运行这段代码时,图像宽度被扩大到最大。
-
所以你希望你的图像只有 600*400 而不是扩展到 900。这就是你的意思吗?
-
我想放大到 900x400 大小,但是图片会占据整个浏览器。扩展到 900 以上是个问题。我只希望它扩展到布局宽度的大小。
-
你想让你的
_Body小部件只有900,然后里面的图像需要扩展到900宽度,对吗?