Класс ScrollController
Класс ScrollController передают в controller у ListView. Смещение меняют jumpTo и animateTo. После работы вызывают dispose.
Синтаксис
ScrollController()
Методы
| Метод | Описание |
|---|---|
animateTo |
Принимает целевое смещение и параметры анимации. |
dispose |
Вызывают в dispose State, когда ScrollController больше не нужен.
|
jumpTo |
Принимает смещение в пикселях. Давайте разберём вызов на примерах. |
Пример
Давайте прочитаем offset после прокрутки:
import 'package:flutter/material.dart';
class OffsetProbe extends StatefulWidget
{
@override
State<OffsetProbe> createState() => _OffsetProbeState();
}
class _OffsetProbeState extends State<OffsetProbe>
{
late final ScrollController controller = ScrollController();
@override
Widget build(BuildContext context)
{
controller.jumpTo(100);
var res = controller.offset;
return Text('$res');
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: Center(child: OffsetProbe()))));
}
На экране появится число смещения прокрутки.
Пример
Давайте привяжем controller к списку:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: ListView(
controller: ScrollController(),
children: List.generate(10, (i) => ListTile(title: Text('abcde'))),
),
),
),
);
}
На экране список использует отдельный контроллер.
Смотрите также
-
виджет
ReorderableDelayedDragStartListener,
который часто ставят рядом в прокручиваемых экранах -
метод
jumpTo,
который дополняет работу с прокруткой -
виджет
ReorderableDragStartListener,
который помогает собрать сложный список -
метод
animateTo,
который задаёт поведение или данные прокрутки