Метод jumpTo
Метод jumpTo класса ScrollPosition
сразу ставит смещение позиции прокрутки.
Анимации нет.
Вызов идёт у position контроллера.
Синтаксис
controller.position.jumpTo(80)
Параметры
| Параметр | Описание |
|---|---|
value |
Новое смещение. Позиционный аргумент. |
Пример
Давайте вызовем его в простом экране:
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.jumpTo(80); }
});
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.jumpTo(160); }
});
return ListView.builder(
controller: controller,
itemCount: 20,
itemBuilder: (c, i) => ListTile(title: Text('12345')),
);
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: PosDemo2())));
}
На экране видна другая часть списка после второго вызова position.
Смотрите также
-
класс
ScrollPosition,
который часто ставят рядом в прокручиваемых экранах -
метод
animateTo,
который дополняет работу с прокруткой -
метод
dispose,
который помогает собрать сложный список -
класс
ScrollPhysics,
который задаёт поведение или данные прокрутки