Вращение значков с помощью Flutter: руководство по созданию анимации вращения при нажатии кнопки

Flutter — это мощная платформа для создания красивых и интерактивных пользовательских интерфейсов. Один из способов улучшить взаимодействие с пользователем — добавить анимацию в ваше приложение Flutter. В этой статье мы рассмотрим различные методы создания анимации вращения при нажатии кнопки, уделяя особое внимание вращающимся значкам.

Метод 1: использование AnimatedBuilder
Виджет AnimatedBuilder — это удобный инструмент для создания пользовательских анимаций во Flutter. Чтобы добиться анимации вращения при нажатии кнопки, выполните следующие действия:

Шаг 1. Импортируйте необходимые пакеты:

import 'package:flutter/animation.dart';
import 'package:flutter/material.dart';

Шаг 2. Определите виджет StatefulWidget:

class RotatingIconAnimation extends StatefulWidget {
  @override
  _RotatingIconAnimationState createState() => _RotatingIconAnimationState();
}

Шаг 3. Реализуйте класс State:

class _RotatingIconAnimationState extends State<RotatingIconAnimation>
    with SingleTickerProviderStateMixin {
  AnimationController _controller;
  Animation<double> _animation;
  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: Duration(milliseconds: 500),
      vsync: this,
    );
    _animation = Tween<double>(
      begin: 0.0,
      end: 1.0,
    ).animate(_controller);
  }
  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return IconButton(
      icon: AnimatedBuilder(
        animation: _animation,
        builder: (BuildContext context, Widget child) {
          return Transform.rotate(
            angle: _animation.value * 2.0 * 3.141592653589793,
            child: Icon(Icons.play_arrow),
          );
        },
      ),
      onPressed: () {
        if (_controller.isCompleted) {
          _controller.reverse();
        } else {
          _controller.forward();
        }
      },
    );
  }
}

Шаг 4. Используйте виджет RotatingIconAnimation:

RotatingIconAnimation(),

Метод 2: использование Transform.rotate
Другой подход к созданию анимации вращения при нажатии кнопки — непосредственное использование виджета Transform.rotate. Вот пример:

class RotatingIconAnimation extends StatefulWidget {
  @override
  _RotatingIconAnimationState createState() => _RotatingIconAnimationState();
}
class _RotatingIconAnimationState extends State<RotatingIconAnimation> {
  bool _isRotated = false;
  @override
  Widget build(BuildContext context) {
    return IconButton(
      icon: Transform.rotate(
        angle: _isRotated ? 2.0 * 3.141592653589793 : 0.0,
        child: Icon(Icons.play_arrow),
      ),
      onPressed: () {
        setState(() {
          _isRotated = !_isRotated;
        });
      },
    );
  }
}

В этой статье мы рассмотрели два метода создания анимации вращения при нажатии кнопки с помощью Flutter. В первом методе использовался виджет AnimatedBuilder, который позволяет создавать более сложные и настраиваемые анимации. Во втором методе использовался виджет Transform.rotate, предоставляющий более простое решение для базовой анимации вращения. Реализуя эти методы, вы можете добавить интерактивности и визуальной привлекательности своим приложениям Flutter.