Метод 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,
который задаёт поведение или данные прокрутки