Как вы увидите в моем коде ниже, у меня есть 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),
);
}