0

在我的 Flutter 应用程序中,我使用 png 图像作为AppBar. 似乎在过去 24 小时内改变了它处理图像大小调整的方式。

在过去的一两个月里,这一直运行良好:在 my MaterialAppmyStatefulWidget返回一个AppBarinside a Scaffold,它的title设置为Image.asset(assetName). Image一旦我添加了AppBar一些padding.

昨天,这个破了。我已经检查了差异,并且自从它工作以来没有任何明显影响这部分代码的变化。我现在以全尺寸显示图像,对于可用空间来说大约是 3 倍大,因此它正在被裁剪。

我已经尝试添加fit: BoxFit.contain,实际上所有其他可能的BoxFit选项 - 绝对没有区别。

我最终使用height: AppBar().preferredSize.height * 0.6onImage作为解决方法。

return Scaffold(
      appBar: AppBar(
        title: Padding(
          padding: EdgeInsets.symmetric(
                     vertical: 10,
                   ),
            child: Image.asset(kLogoImage, height: 
                     AppBar().preferredSize.height * 0.6),
                   ),
...

但我不明白为什么这突然改变了,而我似乎没有做任何影响它的事情。Flutter 本身是否发生了某种转变,从而破坏了这一点?

4

2 回答 2

1

要恢复原始 AppBar 布局行为,请将 AppBar 的标题包装在高度为:kToolbarHeight 的 SizedBox 中。

appBar: AppBar(
  title: SizedBox(
    height: kToolbarHeight,
    child: Image.asset(kLogoImage),
  ),
),

前面的示例引入了 10 个像素的垂直填充,因此:

appBar: AppBar(
  title: SizedBox(
    height: kToolbarHeight,
    child: Padding(
      padding: EdgeInsets.symmetric(vertical: 10),
      child: Image.asset(kLogoImage),
    ),
  ),
),

还在这里讨论:https ://github.com/flutter/flutter/issues/44550#issuecomment-552586000 。

于 2019-11-11T19:49:10.323 回答
0

根据上面 Pablo 的评论,这确实是 Flutter 的一个变化。

于 2019-10-26T06:53:14.470 回答