Дар бораи анимация дар Flutter гап зан.
sobes.tech AI
Ҷавоб аз AI
Дар Flutter, анимациҳо ба ду навъи асосӣ тақсим мешаванд: имплицитӣ ва эксплицитӣ.
-
Анимацияҳои имплицитӣ анимациялар оддӣ мебошанд, ки автоматӣ тағйиротҳои ҳолати widget-ро идора мекунанд. Масалан, AnimatedContainer ба таври ҳамвор параметрҳои худро (ранг, андоза) тағйир медиҳад, вақте ки хусусиятҳоро тағйир медиҳед, бе ниёз ба навиштани контроллерҳои анимация.
-
Анимацияҳои эксплицитӣ назорати пурраро дар бораи раванди анимация пешниҳод мекунанд. Барои онҳо аз AnimationController истифода мешавад, ки вақти ва пешрафти анимацияро идора мекунад. Бо Tween ва Animation, шумо метавонед муайян кунед, ки чӣ гуна арзишҳо дар тӯли вақт тағйир меёбанд.
Масалан, барои анимацияи имплицитӣ:
AnimatedContainer(
duration: Duration(seconds: 1),
width: _selected ? 200 : 100,
height: _selected ? 200 : 100,
color: _selected ? Colors.blue : Colors.red,
child: ...,
)
Барои анимацияи эксплицитӣ:
class MyAnimatedWidget extends StatefulWidget {
@override
_MyAnimatedWidgetState createState() => _MyAnimatedWidgetState();
}
class _MyAnimatedWidgetState extends State<MyAnimatedWidget> with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _animation;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this, duration: Duration(seconds: 2));
_animation = Tween<double>(begin: 0, end: 300).animate(_controller);
_controller.forward();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: _animation,
builder: (context, child) {
return Container(
width: _animation.value,
height: _animation.value,
color: Colors.blue,
);
},
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
}
Инчунин, Flutter барои сохтани анимацияҳои ҳамвор ва ҷавобгӯ воситаҳои қавӣ пешниҳод мекунад, ки таҷрибаи корбарро беҳтар месозад.