// 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 createState() => _RefreshIndicatorExampleState(); } class _RefreshIndicatorExampleState extends State { final GlobalKey _refreshIndicatorKey = GlobalKey(); @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.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'), ), ); } }