Перечисление AnimationStatus
Перечисление AnimationStatus приходит
в addStatusListener
у Animation.
Так отслеживают конец tween у
AnimationController.
Синтаксис
AnimationStatus.forward
Значения
| Значение | Описание |
|---|---|
dismissed |
value на нижней границе, анимация не идёт. |
forward |
value растёт к концу диапазона. |
reverse |
value уменьшается к началу. |
completed |
value дошёл до верхней границы. |
Пример
Давайте выведем статус в консоль при forward:
import 'package:flutter/material.dart';
class Pulse extends StatefulWidget
{
const Pulse({super.key});
@override
State<Pulse> createState() => _PulseState();
}
class _PulseState extends State<Pulse>
with SingleTickerProviderStateMixin
{
late AnimationController _controller;
@override
void initState()
{
super.initState();
_controller = AnimationController(
vsync: this,
duration: Duration(milliseconds: 400),
);
_controller.addStatusListener((status) {
if (status == AnimationStatus.forward) {
print('abcde');
}
});
_controller.forward();
}
@override
void dispose()
{
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context)
{
return MaterialApp(
home: Scaffold(
body: Center(
child: Text('12345'),
),
),
);
}
}
void main()
{
runApp(const Pulse());
}
На экране '12345', в консоли при forward появится 'abcde'.
Пример
Давайте дождаться completed и вывести подпись:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: AnimatedCrossFade(
duration: Duration(milliseconds: 400),
crossFadeState: CrossFadeState.showFirst,
firstChild: Text('abcde'),
secondChild: Text('12345'),
),
),
),
),
);
}
На экране виден 'abcde', второй child '12345'
появится после смены CrossFadeState.
Смотрите также
-
метод
addStatusListener,
который передаётAnimationStatusвcallback -
класс
AnimationController,
у которого меняетсяstatus -
перечисление
CrossFadeState,
которое выбираетchildуAnimatedCrossFade -
виджет
AnimatedCrossFade,
где виден переход между двумя детьми