Виджет SliverOverlapInjector
Виджет SliverOverlapInjector ставят в slivers тела рядом с SliverOverlapAbsorber.
Синтаксис
SliverOverlapInjector(handle: handle)
Параметры
| Параметр | Описание |
|---|---|
handle |
Тот же handle, что у SliverOverlapAbsorber. Обязательный параметр.
|
Пример
Давайте вставим injector перед списком:
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')]),
],
);
},
),
),
),
),
);
}
На экране первая строка списка не прячется под шапкой.
Пример
Давайте добавить второй sliver после injector:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: NestedScrollView(
headerSliverBuilder: (context, inner) => [SliverAppBar(title: Text('abcde'))],
body: ListView(children: [Text('12345')]),
),
),
),
);
}
На экране простой NestedScrollView без overlap пар, injector не обязателен.
Смотрите также
-
виджет
SliverOverlapAbsorber,
который часто ставят рядом в прокручиваемых экранах -
перечисление
CollapseMode,
который дополняет работу с прокруткой -
виджет
SliverSafeArea,
который помогает собрать сложный список -
виджет
SliverVisibility,
который задаёт поведение или данные прокрутки