Виджет Scrollable
Виджет Scrollable задаёт viewportBuilder и controller. Обычно его оборачивают готовые виджеты вроде ListView.
Синтаксис
Scrollable(
axisDirection: AxisDirection.down,
controller: scrollController,
viewportBuilder: (context, offset) => viewport,
)
Параметры
| Параметр | Описание |
|---|---|
viewportBuilder |
Строит viewport с учётом смещения. Обязательный параметр. |
controller |
ScrollController.
|
physics |
ScrollPhysics.
|
Пример
Давайте прокрутим простую колонку:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Scrollable(
axisDirection: AxisDirection.down,
controller: ScrollController(),
viewportBuilder: (BuildContext context, ViewportOffset offset)
{
return SingleChildViewport(
offset: offset,
child: Column(
children: List.generate(
25,
(i) => ListTile(title: Text('abcde')),
),
),
);
},
),
),
),
);
}
На экране длинная колонка прокручивается жестом.
Пример
Давайте включим горизонтальную ось:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Scrollable(
axisDirection: AxisDirection.right,
controller: ScrollController(),
viewportBuilder: (context, offset)
{
return SingleChildViewport(
offset: offset,
child: Row(
children: List.generate(
10,
(i) => SizedBox(width: 120, child: Center(child: Text('12345'))),
),
),
);
},
),
),
),
);
}
На экране подписи уезжают в сторону при горизонтальном свайпе.
Смотрите также
-
виджет
PrimaryScrollController,
который часто ставят рядом в прокручиваемых экранах -
виджет
ListWheelScrollView,
который дополняет работу с прокруткой -
виджет
ScrollConfiguration,
который помогает собрать сложный список -
метод
useDelegate,
который задаёт поведение или данные прокрутки