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

Виджет AnimatedAlign

Виджет AnimatedAlign анимирует изменения параметров при setState.

Синтаксис

AnimatedAlign( duration: duration, child: child, )

Параметры

Параметр Описание
duration Параметр AnimatedAlign.
alignment Параметр AnimatedAlign.
curve Параметр AnimatedAlign.
child Параметр AnimatedAlign.

Пример

Давайте сменим параметры по кнопке:

import 'package:flutter/material.dart'; class Demo extends StatefulWidget { const Demo({super.key}); @override State<Demo> createState() => _DemoState(); } class _DemoState extends State<Demo> { bool big = false; @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ AnimatedAlign(duration: Duration(milliseconds: 400), alignment: big ? Alignment.topCenter : Alignment.bottomCenter, child: Text('abcde')), ElevatedButton( onPressed: () => setState(() => big = !big), child: Text('toggle'), ), ], ), ), ), ); } } void main() { runApp(const Demo()); }

На экране AnimatedAlign плавно доедет до новых значений, текст 'abcde' останется внутри.

Пример

Давайте повторим переход для второго состояния:

import 'package:flutter/material.dart'; class Demo extends StatefulWidget { const Demo({super.key}); @override State<Demo> createState() => _DemoState(); } class _DemoState extends State<Demo> { bool big = false; @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ AnimatedAlign( duration: Duration(milliseconds: 400), heightFactor: 1, widthFactor: 1, alignment: big ? Alignment.centerLeft : Alignment.centerRight, child: Text('12345'), ), ElevatedButton( onPressed: () => setState(() => big = !big), child: Text('toggle'), ), ], ), ), ), ); } } void main() { runApp(const Demo()); }

На экране после toggle снова сработает AnimatedAlign, подпись '12345' внутри виджета.

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

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