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

Метод animateTo

Метод animateTo класса ScrollPosition плавно меняет смещение позиции прокрутки. Вызов идёт у position контроллера, а не у самого контроллера. Смещение, длительность и кривая значат то же, что у контроллера.

Синтаксис

controller.position.animateTo(150, duration: Duration(milliseconds: 300), curve: Curves.ease)

Параметры

Параметр Описание
value Текущее значение, которое показывает элемент.
duration Длительность Duration.
curve Кривая скорости анимации.

Пример

Давайте вызовем его в простом экране:

import 'package:flutter/material.dart'; class PosDemo extends StatefulWidget { @override State<PosDemo> createState() => _PosDemoState(); } class _PosDemoState extends State<PosDemo> { late final ScrollController controller = ScrollController(); @override Widget build(BuildContext context) { WidgetsBinding.instance.addPostFrameCallback((_) { if (controller.hasClients) { controller.position.animateTo(150, duration: Duration(milliseconds: 300), curve: Curves.ease); } }); return ListView.builder( controller: controller, itemCount: 25, itemBuilder: (c, i) => ListTile(title: Text('abcde')), ); } } void main() { runApp(MaterialApp(home: Scaffold(body: PosDemo()))); }

На экране список сместится через ScrollPosition.

Пример

Давайте повторим вызов с другими числами:

import 'package:flutter/material.dart'; class PosDemo2 extends StatefulWidget { @override State<PosDemo2> createState() => _PosDemo2State(); } class _PosDemo2State extends State<PosDemo2> { late final ScrollController controller = ScrollController(); @override Widget build(BuildContext context) { WidgetsBinding.instance.addPostFrameCallback((_) { if (controller.hasClients) { controller.position.animateTo(300, duration: Duration(milliseconds: 400), curve: Curves.linear); } }); return ListView.builder( controller: controller, itemCount: 20, itemBuilder: (c, i) => ListTile(title: Text('12345')), ); } } void main() { runApp(MaterialApp(home: Scaffold(body: PosDemo2()))); }

На экране видна другая часть списка после второго вызова position.

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

  • метод jumpTo,
    который часто ставят рядом в прокручиваемых экранах
  • класс ScrollPhysics,
    который дополняет работу с прокруткой
  • класс ScrollPosition,
    который помогает собрать сложный список
  • класс BouncingScrollPhysics,
    который задаёт поведение или данные прокрутки
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить