smart_
refresher

The most complete pull-to-refresh and infinite loading solution for Flutter. Robust, customizable, and production-ready.

example.dart
SmartRefresher(
  controller: _refreshController,
  // enable infinite scroll
  enablePullDown: true,
  enablePullUp: true,
  header: const WaterDropHeader(),
  onRefresh: _onRefresh,
  onLoading: _onLoading,
  child: ListView.builder(
    itemCount: items.length,
    itemBuilder: (c, i) => ItemTile(items[i]),
  ),
)

Everything you need
for smooth scrolling.

Easy to Use

Wrap any scrollable widget with SmartRefresher and you're done. No complex setup required.

🎨

5 Built-in Themes

Classic, Material 3, iOS 17, WaterDrop, and Glassmorphism — or build your own custom indicator.

🚀

High Performance

Sliver-native architecture for smooth 60fps animations even with large lists and complex scroll views.

🧩

State Management Ready

First-class integration with Riverpod, Bloc, Provider, and any other reactive state solution.

📱

All Platforms

Works on iOS, Android, Web, macOS, Windows, and Linux — wherever Flutter runs.

🔒

Dart 3 & Flutter 3.x

Fully null-safe, no external dependencies, and compatible with the latest Flutter releases.

Start building today.

Join thousands of developers building high-performance Flutter apps with smart_refresher.