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

Виджет AnimatedSlide

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

Синтаксис

AnimatedSlide( duration: duration, child: child, )

Параметры

Параметр Описание
duration Параметр AnimatedSlide.
offset Параметр AnimatedSlide.
curve Параметр AnimatedSlide.
child Параметр AnimatedSlide.

Пример

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

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: [ AnimatedSlide(duration:Duration(milliseconds:400), offset: big?Offset(0.2,0):Offset.zero, child: Text('abcde')), ElevatedButton( onPressed: () => setState(() => big = !big), child: Text('toggle'), ), ], ), ), ), ); } } void main() { runApp(const Demo()); }

На экране AnimatedSlide плавно доедет до новых значений, текст '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: [ AnimatedSlide(duration:Duration(milliseconds:400), offset: big?Offset(-0.2,0):Offset.zero, child: Text('12345')), ElevatedButton( onPressed: () => setState(() => big = !big), child: Text('toggle'), ), ], ), ), ), ); } } void main() { runApp(const Demo()); }

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

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

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