Изменил ли Flutter способ обработки изображения в качестве заголовка AppBar? - PullRequest
0 голосов
/ 26 октября 2019

В моем приложении Flutter я использую изображение png в качестве заголовка внутри AppBar. Похоже, что за последние 24 часа изменилось, как оно обрабатывает изменение размера изображения.

В течение последнего месяца или двух это работало нормально: внутри моего MaterialApp моего StatefulWidget возвращается AppBarвнутри Scaffold, для которого title имеет значение Image.asset(assetName). Image автоматически уменьшался, чтобы аккуратно вписаться в AppBar на экране, как только я добавил немного padding.

Вчера это сломалось. Я проверил различия и ничего не изменилось, что, очевидно, повлияло бы на эту часть кода с тех пор, как оно работало. Теперь у меня есть изображение в полном размере, которое примерно в 3 раза больше для доступного пространства, поэтому оно обрезается.

Я пытался добавить fit: BoxFit.contain, и, действительно, все возможные варианты BoxFit - абсолютно без разницы.

Я закончил тем, что Image использовал *1022* какОбходной путь.

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

Но я не понимаю, почему это внезапно изменилось, и, похоже, я не сделал ничего, что на это повлияло. Был ли какой-то сдвиг в самом Флаттере, который как-то сломал это?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Чтобы восстановить исходное поведение макета AppBar, оберните заголовок AppBar в SizedBox с помощью высоты: kToolbarHeight.

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.

0 голосов
/ 26 октября 2019

Это действительно изменение во Флаттере, согласно комментарию Пабло выше.

...