问题描述:在使用AnimatedSwitcher时,无法从方法中进行动画处理。
解决方法:
确保在使用AnimatedSwitcher时,将其包装在一个StatefulWidget中。
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State {
@override
Widget build(BuildContext context) {
return AnimatedSwitcher(
// ...
);
}
}
使用一个变量来控制AnimatedSwitcher的切换。
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State {
bool _showFirst = true;
@override
Widget build(BuildContext context) {
return AnimatedSwitcher(
duration: Duration(milliseconds: 500),
child: _showFirst ? Container(key: UniqueKey(), child: Text('First')) : Container(key: UniqueKey(), child: Text('Second')),
);
}
void toggle() {
setState(() {
_showFirst = !_showFirst;
});
}
}
在需要切换AnimatedSwitcher的地方调用toggle方法。
RaisedButton(
onPressed: () {
setState(() {
toggle();
});
},
child: Text('Toggle'),
)
通过上述解决方法,您应该能够在方法中使用AnimatedSwitcher并成功进行动画处理。