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

Метод animateTo

Метод animateTo класса TabController меняет index у с анимацией. Первый аргумент - номер вкладки, опционально duration и curve. Синхронизирует TabBar и TabBarView.

Синтаксис

tabController.animateTo( 1, duration: Duration(milliseconds: 300), curve: Curves.easeInOut, )

Параметры

Параметр Описание
value Индекс вкладки от 0 до length - 1.
duration Длительность анимации переключения.
curve Кривая скорости анимации.

Пример

Давайте переключим вкладку кнопкой через animateTo:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: TabAnimateDemo())); } class TabAnimateDemo extends StatefulWidget { const TabAnimateDemo({super.key}); @override State<TabAnimateDemo> createState() => _TabAnimateDemoState(); } class _TabAnimateDemoState extends State<TabAnimateDemo> with SingleTickerProviderStateMixin { late TabController tabController; @override void initState() { super.initState(); tabController = TabController(length: 2, vsync: this); } @override void dispose() { tabController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('abcde'), bottom: TabBar( controller: tabController, tabs: [ Tab(text: '12345'), Tab(text: 'abcde'), ], ), ), body: TabBarView( controller: tabController, children: [ Center(child: Text('12345')), Center(child: Text('abcde')), ], ), floatingActionButton: FloatingActionButton( onPressed: () { tabController.animateTo(1); }, child: Icon(Icons.arrow_forward), ), ); } }

FAB вызовет animateTo(1) и откроет вторую вкладку.

Пример

Давайте вернёмся на первую вкладку без длительной анимации:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: TabJumpDemo())); } class TabJumpDemo extends StatefulWidget { const TabJumpDemo({super.key}); @override State<TabJumpDemo> createState() => _TabJumpDemoState(); } class _TabJumpDemoState extends State<TabJumpDemo> with SingleTickerProviderStateMixin { late TabController tabController; @override void initState() { super.initState(); tabController = TabController(length: 2, vsync: this); tabController.index = 1; } @override void dispose() { tabController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { tabController.animateTo(0); }, child: Text('12345'), ), ), ); } }

animateTo(0) вернёт controller на первую вкладку.

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

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