Класс Animation
Класс Animation<T> слушают через
addListener.
Его часто даёт AnimationController
или animate у Tween.
Синтаксис
Animation<double> animation
Методы
| Метод | Описание |
|---|---|
addListener |
Подписывает VoidCallback на изменение value анимации.
|
addStatusListener |
Подписывает callback на смену AnimationStatus.
|
drive |
Строит AnimationAnimation |
removeListener |
Отписывает listener от изменений value. Давайте разберём вызов на примерах. |
removeStatusListener |
Отписывает statusListener от анимации. Давайте разберём вызов на примерах. |
Пример
Давайте выведем value у контроллера:
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: 600),
);
}
@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' рядом с value AnimationController.
Пример
Давайте покажем opacity через Animation:
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: 600),
);
}
@override
void dispose()
{
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
Animation<double> anim = _controller;
return MaterialApp(
home: Scaffold(
body: Center(
child: FadeTransition(
opacity: anim,
child: Text('abcde'),
),
),
),
);
}
}
void main() { runApp(const Pulse()); }
На экране 'abcde' связан с Animation
Смотрите также
-
класс
AnimationController,
который задаёт длительность иvsync -
смесь
SingleTickerProviderStateMixin,
которую добавляют кStateдляvsync -
класс
Tween,
который переводит значениеcontroller.value -
виджет
FadeTransition,
который слушаетAnimation