Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmAwRf 118 of 125 menu
◀ ▶

Обновление списка RefreshIndicator в Flutter

Жест «потянуть вниз» для обновления данных даёт RefreshIndicator. Его кладут поверх прокручиваемого виджета - чаще всего ListView или SingleChildScrollView.

Колбэк onRefresh обязан вернуть Future. Пока Future не завершится, крутится индикатор у верхнего края. После успеха обновите список через setState:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: RefreshDemoPage())); } class RefreshDemoPage extends StatefulWidget { const RefreshDemoPage({super.key}); @override State<RefreshDemoPage> createState() => _RefreshDemoPageState(); } class _RefreshDemoPageState extends State<RefreshDemoPage> { final items = <String>['First entry', 'Second entry']; int stamp = 0; Future<void> reload() async { await Future<void>.delayed(const Duration(seconds: 1)); if (!mounted) return; setState(() { stamp++; items.add('Update #$stamp'); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Refresh')), body: RefreshIndicator( onRefresh: reload, child: ListView.builder( physics: const AlwaysScrollableScrollPhysics(), // short list can refresh itemCount: items.length, itemBuilder: (context, index) { return ListTile(title: Text(items[index])); }, ), ), ); } }

При обновлении добавляйте в начало списка строку с текущим временем DateTime.now(). Задержка имитации - 800 ms. Минимум три элемента на экране.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить