Виджет SliverOverlapAbsorber
Виджет SliverOverlapAbsorber принимает handle из NestedScrollView и sliver.
Синтаксис
SliverOverlapAbsorber(handle: handle, sliver: sliver)
Параметры
| Параметр | Описание |
|---|---|
handle |
SliverOverlapAbsorberHandle из NestedScrollView.
|
sliver |
Sliver шапки, чьё перекрытие поглощают. |
Пример
Давайте связать шапку и тело:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: NestedScrollView(
headerSliverBuilder: (context, inner)
{
return [
SliverOverlapAbsorber(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: SliverAppBar(title: Text('abcde')),
),
];
},
body: Builder(
builder: (context)
{
return CustomScrollView(
slivers: [
SliverOverlapInjector(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
),
SliverList.list(children: [Text('12345')]),
],
);
},
),
),
),
),
);
}
На экране список начинается ниже шапки без двойного смещения.
Пример
Давайте добавить pinned шапку:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: NestedScrollView(
headerSliverBuilder: (context, inner)
{
return [
SliverOverlapAbsorber(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: SliverAppBar(title: Text('12345'), pinned: true),
),
];
},
body: ListView(children: List.generate(12, (i) => Text('abcde'))),
),
),
),
);
}
На экране pinned полоска и список выровнены через absorber.
Смотрите также
-
виджет
SliverSafeArea,
который часто ставят рядом в прокручиваемых экранах -
виджет
SliverOverlapInjector,
который дополняет работу с прокруткой -
виджет
SliverVisibility,
который помогает собрать сложный список -
перечисление
CollapseMode,
который задаёт поведение или данные прокрутки