У меня двое детей внутри Column
виджета, первый простой Container
, а второй - Expanded
виджет. Пользователь может скрыть / показать первый Container
. В этом случае мне нужно применить анимацию к обоим виджетам, поэтому высота первого контейнера должна автоматически уменьшаться, а второй виджет должен постепенно увеличиваться до заполнения всего пространства.
Я тестировал, чтобы использовать AnimatedContainer
, но он должен указать свою высоту после и до, что мне не известно.
Любое предложение, пожалуйста?
class ViewerPage extends StatefulWidget {
@override
_ViewerPageState createState() => _ViewerPageState();
}
class _ViewerPageState extends State<ViewerPage> {
bool visible = true;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Example"),
),
bottomNavigationBar: BottomAppBar(
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
IconButton(
icon: Icon(Icons.show_chart),
onPressed: () {
setState(() {
visible = !visible;
});
},
),
],
),
),
body: Container(
child: Column(
children: <Widget>[
Visibility(
visible: visible,
child: Container(
child: Text("This Container can be visible or hidden"),
color: Colors.red),
),
Expanded(
child: ListView.builder(
itemBuilder: (context, index) => Text("Item ..."),
itemCount: 20,
),
),
],
),
),
);
}
}