Класс ScrollNotification
Класс ScrollNotification ловят через NotificationListener. Поле metrics описывает смещение и границы.
Синтаксис
notification.metrics.pixels
Пример
Давайте выведем pixels в текст:
import 'package:flutter/material.dart';
class NoteProbe extends StatefulWidget
{
@override
State<NoteProbe> createState() => _NoteProbeState();
}
class _NoteProbeState extends State<NoteProbe>
{
double label = 0;
@override
Widget build(BuildContext context)
{
return NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification n)
{
setState(() => label = n.metrics.pixels);
return false;
},
child: Column(
children: [
Text('$label'),
Expanded(child: ListView(children: List.generate(15, (i) => Text('abcde')))),
],
),
);
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: NoteProbe())));
}
На экране число обновляется при каждом движении списка.
Пример
Давайте проверим depth уведомления:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification n)
{
debugPrint('${n.depth}');
return false;
},
child: ListView(children: [Text('12345')]),
),
),
),
);
}
На экране список прокручивается, depth пишется в консоль отладки.
Смотрите также
-
класс
AlwaysScrollableScrollPhysics,
который часто ставят рядом в прокручиваемых экранах -
виджет
SliverAppBar,
который дополняет работу с прокруткой -
класс
NeverScrollableScrollPhysics,
который помогает собрать сложный список -
виджет
FlexibleSpaceBar,
который задаёт поведение или данные прокрутки