Как динамически изменить высоту SliverAppBar - PullRequest
0 голосов
/ 03 октября 2018

Я показываю изображение из сети, которое уменьшается при прокрутке.Я хочу показать целое изображение без подкладки или обрезки.Но если я прокомментирую строку с extendedHeight - изображения нет - только панель приложений с ее высотой.Есть ли виджет, который может менять свой размер в зависимости от размера загружаемого изображения?

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,
    ),

1 Ответ

0 голосов
/ 09 октября 2018

Наконец я создал пользовательский 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,
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...