A Flutter package for Wear OS that provides a circular scrollbar optimized for rotary input and round screens.
Enhance scrollable widgets like ListView, PageView, and CustomScrollView with native-feeling interactions.
- 🎯 Native Experience: Curved scrollbar designed for circular Wear OS displays.
- 🔄 Rotary Input: Full support for rotating bezels/crowns with haptic feedback (via
RotaryScrollbar). - ⚡ Auto-Hide: Scrollbar fades after inactivity (configurable duration and animations).
- 🎨 Customizable: Adjust colors, padding, width, and animation curves.
- 📜 Scrollable-Ready: Works with any
ScrollControllerorPageController. - 📱 Device Support: Galaxy Watch 4/5, Pixel Watch, and Wear OS 3+ devices.
| Feature | RoundScrollbar |
RotaryScrollbar |
|---|---|---|
| Visual Scrollbar | ✅ Curved track/thumb | ✅ Inherits from RoundScrollbar |
| Rotary Input | ❌ | ✅ With haptic feedback |
| Page Transitions | ❌ | ✅ Smooth page animations |
| Auto-Hide | ✅ | ✅ |
RotaryScrollbar: Default choice for Wear OS apps using rotary input.RoundScrollbar: For touch-only interactions or custom scroll logic.
RotaryScrollbar(
controller: ScrollController(),
child: ListView.builder(
itemBuilder: (_, index) => ListTile(title: Text('Item $index')),
),
)dependencies:
rotary_scrollbar: ^1.1.0Rotary Input (wearable_rotary)
Add to MainActivity.kt:
import android.view.MotionEvent
import com.samsung.wearable_rotary.WearableRotaryPlugin
class MainActivity : FlutterActivity() {
override fun onGenericMotionEvent(event: MotionEvent?): Boolean {
return when {
WearableRotaryPlugin.onGenericMotionEvent(event) -> true
else -> super.onGenericMotionEvent(event)
}
}
}Add to AndroidManifest.xml:
<uses-permission android:name="android.permission.VIBRATE"/>RoundScrollbar(
controller: ScrollController(),
child: ListView.builder(
itemBuilder: (_, index) => ListTile(title: Text("Item $index")),
),
)RotaryScrollbar(
controller: PageController(),
child: PageView(
children: [Page1(), Page2(), Page3()],
),
)RotaryScrollbar(
width: 12, // Thickness
padding: 16, // Distance from screen edge
trackColor: Colors.grey, // Scrollbar track
thumbColor: Colors.blue, // Scrollbar thumb
autoHideDuration: Duration(seconds: 5),
// ...other params
)RotaryScrollbar(
hasHapticFeedback: false, // Turn off vibrations
// ...
)-
Samsung Galaxy Watch 4/5/6
-
Google Pixel Watch
-
Other Wear OS 3+ devices with rotary input.
