--- name: widgets-refresh-indicator description: Flutter RefreshIndicator - pull-to-refresh functionality for scrollable content --- # RefreshIndicator `RefreshIndicator` provides pull-to-refresh functionality for scrollable widgets. ## Basic Usage ```dart RefreshIndicator( onRefresh: () async { // Fetch new data await fetchData(); }, child: ListView( children: [ ListTile(title: Text('Item 1')), ListTile(title: Text('Item 2')), ListTile(title: Text('Item 3')), ], ), ) ``` ## With Future ```dart RefreshIndicator( onRefresh: () async { final data = await fetchData(); setState(() { _items = data; }); }, child: ListView.builder( itemCount: _items.length, itemBuilder: (context, index) { return ListTile(title: Text(_items[index])); }, ), ) ``` ## Customization ```dart RefreshIndicator( onRefresh: () async { await fetchData(); }, color: Colors.blue, // Indicator color backgroundColor: Colors.white, // Background color strokeWidth: 3.0, // Indicator stroke width displacement: 40.0, // Displacement from top edgeOffset: 0.0, // Edge offset triggerMode: RefreshIndicatorTriggerMode.onEdge, // onEdge, anywhere child: ListView(...), ) ``` ## Complete Example ```dart class RefreshableList extends StatefulWidget { const RefreshableList({super.key}); @override State createState() => _RefreshableListState(); } class _RefreshableListState extends State { List _items = ['Item 1', 'Item 2', 'Item 3']; Future _refresh() async { // Simulate network delay await Future.delayed(Duration(seconds: 2)); setState(() { _items = ['New Item 1', 'New Item 2', 'New Item 3']; }); } @override Widget build(BuildContext context) { return RefreshIndicator( onRefresh: _refresh, child: ListView.builder( itemCount: _items.length, itemBuilder: (context, index) { return ListTile(title: Text(_items[index])); }, ), ); } } ``` ## Key Points - Use `RefreshIndicator` for pull-to-refresh - Wrap scrollable widgets (ListView, GridView, etc.) - `onRefresh` must return a Future - Customize appearance with properties - Works with any scrollable widget - Provides standard Material Design refresh indicator - Use `triggerMode` to control when refresh triggers