gpt4 book ai didi

flutter - 如何动态更改 SliverAppBar 高度

转载 作者:IT王子 更新时间:2023-10-29 07:00:03 26 4
gpt4 key购买 nike

我显示来自网络的图像,它在滚动时缩小。我想显示没有填充或裁剪的整个图像。但是,如果我用 expandedHeight 注释行 - 没有图像 - 只有 appbar 及其高度。有没有什么小部件,可以根据上传图片的大小改变它的大小?

CustomScrollView(
controller: controller,
key: listKey,
slivers: <Widget>[
SliverAppBar(
// expandedHeight: 200.0,
flexibleSpace: FlexibleSpaceBar(
background: getHeroWidget(
_conference.dbId,
FadeInImage.assetNetwork(
placeholder: conf_img_placeholder,
image: _conference.info.image,
fit: BoxFit.cover,
)),
title: Text(conference_title),
centerTitle: true,
),
pinned: true,
),

最佳答案

最后我创建了自定义 SliverAppBar。出现另一个问题 - 计算时必须考虑的状态栏宽度。

import 'dart:ui' as ui;

class _HeaderBar extends StatefulWidget {
@override
State<StatefulWidget> createState() => _HeaderState();
}

class _HeaderState extends State<_HeaderBar> {
@override
Widget build(BuildContext context) {
Image image = Image.network(...);
Completer<ui.Image> completer = new Completer<ui.Image>();
image.image.resolve(ImageConfiguration()).addListener((ImageInfo info, bool _) {
completer.complete(info.image);
});
final double statusBarHeight = MediaQuery.of(context).padding.top;
return FutureBuilder(
future: completer.future,
builder: (context, AsyncSnapshot<ui.Image> snapshot) {
return SliverAppBar(
expandedHeight: snapshot.hasData
? MediaQuery.of(context).size.width / snapshot.data.width.toDouble() * snapshot.data.height.toDouble() -
statusBarHeight
: 0.0,
...

关于flutter - 如何动态更改 SliverAppBar 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com