Виджет RefreshIndicator
Виджет RefreshIndicator принимает onRefresh - функцию, которая возвращает Future. child должен прокручиваться.
Синтаксис
RefreshIndicator(
onRefresh: () async {},
child: ListView(),
)
Параметры
| Параметр | Описание |
|---|---|
onRefresh |
Асинхронное действие обновления. Обязательный параметр. |
child |
Прокручиваемый список. Обязательный параметр. |
Пример
Давайте обновим подпись после жеста:
import 'package:flutter/material.dart';
class RefreshDemo extends StatefulWidget
{
@override
State<RefreshDemo> createState() => _RefreshDemoState();
}
class _RefreshDemoState extends State<RefreshDemo>
{
String label = 'abcde';
Future<void> reload() async
{
await Future.delayed(Duration(seconds: 1));
setState(() => label = '12345');
}
@override
Widget build(BuildContext context)
{
return RefreshIndicator(
onRefresh: reload,
child: ListView(
children: [ListTile(title: Text(label))],
),
);
}
}
void main()
{
runApp(MaterialApp(home: Scaffold(body: RefreshDemo())));
}
На экране после pull-to-refresh подпись сменится на другую.
Пример
Давайте покажем индикатор на длинном списке:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: RefreshIndicator(
onRefresh: () async { await Future.delayed(Duration(milliseconds: 500)); },
child: ListView.builder(
itemCount: 30,
itemBuilder: (c, i) => ListTile(title: Text('abcde')),
),
),
),
),
);
}
На экране круговой индикатор появится на время обновления.
Смотрите также
-
виджет
Scrollbar,
который часто ставят рядом в прокручиваемых экранах -
виджет
ReorderableListView,
который дополняет работу с прокруткой -
метод
useDelegate,
который помогает собрать сложный список -
метод
builder,
который задаёт поведение или данные прокрутки