使用LayoutBuilder和Container来替代AnimatedContainer。在LayoutBuilder中,可以使用BoxConstraints来动态设置Container的高度,并使用AnimatedContainer来动画这些参数的更改。以下是示例代码:
bool _isExpanded = false;
double _expandedHeight = 200;
double _collapsedHeight = 100;
LayoutBuilder(
builder: (context, constraints) {
return GestureDetector(
onTap: () {
setState(() {
_isExpanded = !_isExpanded;
});
},
child: Container(
height: _isExpanded
? _expandedHeight
: _collapsedHeight,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(10),
),
child: AnimatedContainer(
duration: Duration(seconds: 1),
height: _isExpanded
? _expandedHeight
: _collapsedHeight,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(10),
),
child: Center(
child: Text(
"Tap to Expand",
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
),
),
);
},
)