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

Класс 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())))); }

На экране появится текущее смещение в пикселях.

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

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