Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
812 of 1024 menu
◀ ▶

Класс AnimationController

Класс AnimationController нужен ticker от SingleTickerProviderStateMixin или TickerProviderStateMixin. Параметры duration и vsync задают длительность и синхронизацию кадров. Запуск и остановка идут через методы forward, reverse и stop.

Синтаксис

AnimationController( duration: duration, vsync: vsync, )

Параметры

Параметр Описание
duration Сколько длится проход от 0 до 1. Принимает Duration.
vsync Источник тактов кадра. Обычно это State с миксином SingleTickerProviderStateMixin.

Методы

Метод Описание
animateBack Анимирует value к target в обратном направлении по curve.
animateTo Анимирует value к target за duration с curve.
dispose Освобождает Ticker и отписывает listener контроллера.
fling Запускает анимацию с начальной скоростью velocity.
forward Запускает анимацию от текущего value к 1.0.
repeat Повторяет анимацию между min и max, пока не вызовут stop.
reset Ставит value в 0.0 без анимации. Давайте разберём вызов на примерах.
reverse Запускает анимацию от текущего value к 0.0.
stop Останавливает текущую анимацию контроллера.

Пример

Давайте создадим контроллер и запустим 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: 800), )..forward(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Text( '12345', style: TextStyle( opacity: _controller.value, ), ), ), ), ); } } void main() { runApp(const Pulse()); }

На экране '12345' проявится по мере роста value у AnimationController.

Пример

Давайте покажем FadeTransition с контроллером:

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: FadeTransition( opacity: _controller, child: Text('abcde'), ), ), ), ); } } void main() { runApp(const Pulse()); }

На экране текст 'abcde' связан с AnimationController через FadeTransition.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить