Класс ScrollPosition
Класс ScrollPosition возвращается из ScrollController.position. Поля pixels, minScrollExtent и maxScrollExtent задают границы. Смещение меняют jumpTo и animateTo.
Синтаксис
scrollController.position
Методы
| Метод | Описание |
|---|---|
animateTo |
Похож на animateTo у контроллера, но работает на position. |
jumpTo |
Вызывают у position контроллера. Давайте разберём вызов на примерах. |
Пример
Давайте выведем maxScrollExtent:
import 'package:flutter/material.dart';
class MaxProbe extends StatefulWidget
{
@override
State<MaxProbe> createState() => _MaxProbeState();
}
class _MaxProbeState extends State<MaxProbe>
{
late final ScrollController controller = ScrollController();
@override
Widget build(BuildContext context)
{
return ListView.builder(
controller: controller,
itemCount: 20,
itemBuilder: (c, i) => ListTile(title: Text('abcde')),
);
}
@override
void initState()
{
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {});
});
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: MaxProbe())));
}
На экране длинный список, position доступна после привязки controller.
Пример
Давайте прочитаем pixels:
import 'package:flutter/material.dart';
class PixelProbe extends StatelessWidget
{
final ScrollController controller = ScrollController();
@override
Widget build(BuildContext context)
{
controller.jumpTo(50);
var res = controller.position.pixels;
return Text('$res');
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: Center(child: PixelProbe()))));
}
На экране появится текущее смещение в пикселях.