| // 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'), |
| ), |
| ); |
| } |
| } |