Как оживить между государствами - PullRequest
0 голосов
/ 13 июня 2019

Как вы увидите в моем коде ниже, у меня есть 2 переменные, каждая из которых отображает что-то еще, зависит от состояния раскрытия, чтобы узнать, развернут ли контейнер или нет.

Когда я нажимаю кнопку и раскрываю свой контейнер, на мгновение появляется ошибка RenderFlex, вызванная изображением.

Это похоже на показ изображения до полного раскрытия контейнера. И как бы то ни было, переход между развернутым / нерасширенным выглядит действительно некрасиво.

Я пытался использовать Hero анимацию на изображении, но она не удалась.

Любые предложения, что делать, чтобы избавиться от этой ошибки?

 body: Container(
                child: ListView.builder(
                  itemCount: 2,
                  itemBuilder: (BuildContext context, int ,index) {
                        return _buildCards(context, index, model);
                      },
                    ),
                  ));

    Widget _buildCards(
          BuildContext context, int index, ConnectedModel model) {

        Data item = model.data.elementAt(index);

        var exAnimatedContainer = AnimatedContainer(
            curve: Curves.easeOut,
            duration: Duration(milliseconds: 500),
            color: Colors.white,
            height: item.expanded
                ? MediaQuery.of(context).size.height * 0.30
                : MediaQuery.of(context).size.height * 0.13,
            child: Column(
              children: <Widget>[
                Container(
                  height: MediaQuery.of(context).size.height * 0.2,
                  child: Image.network(
                    model.data[index].image,
                    width: double.infinity,
                    fit: BoxFit.cover,
                  ),
                ),
              ],
            ));
        var notExAnimatedContainer = AnimatedContainer(
          curve: Curves.easeOut,
          duration: Duration(milliseconds: 500),
          color: Colors.white,
          height: item.expanded
              ? MediaQuery.of(context).size.height * 0.30
              : MediaQuery.of(context).size.height * 0.13,
          child: Row(
            children: <Widget>[
              Container(
                width: MediaQuery.of(context).size.width * 0.2,
                height: MediaQuery.of(context).size.height * 0.13,
                child: Image.network(
                  model.data[index].image,
                  fit: BoxFit.cover,
                ),
              ),
            ],
          ),
        );
        return GestureDetector(
          onTap: () {
            print('pressed');
            setState(() {
              item.expanded = !item.expanded;
            });
          },
          child: Padding(
              padding: const EdgeInsets.all(15.0),
              child: item.expanded ? exAnimatedContainer : notExAnimatedContainer),
        );

  }
...