// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; /// Flutter code sample for [RefreshIndicator]. void main() => runApp(const RefreshIndicatorExampleApp()); class RefreshIndicatorExampleApp extends StatelessWidget { const RefreshIndicatorExampleApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp( home: RefreshIndicatorExample(), ); } } class RefreshIndicatorExample extends StatefulWidget { const RefreshIndicatorExample({super.key}); @override State<RefreshIndicatorExample> createState() => _RefreshIndicatorExampleState(); } class _RefreshIndicatorExampleState extends State<RefreshIndicatorExample> { final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('RefreshIndicator Sample'), ), body: RefreshIndicator( key: _refreshIndicatorKey, color: Colors.white, backgroundColor: Colors.blue, strokeWidth: 4.0, onRefresh: () async { // Replace this delay with the code to be executed during refresh // and return a Future when code finishes execution. return Future<void>.delayed(const Duration(seconds: 3)); }, // Pull from top to show refresh indicator. child: ListView.builder( itemCount: 25, itemBuilder: (BuildContext context, int index) { return ListTile( title: Text('Item $index'), ); }, ), ), floatingActionButton: FloatingActionButton.extended( onPressed: () { // Show refresh indicator programmatically on button tap. _refreshIndicatorKey.currentState?.show(); }, icon: const Icon(Icons.refresh), label: const Text('Show Indicator'), ), ); } }