scrollable
A powerful set of scrollable widgets including haptics, keyboard dismissing, and more.
A powerful set of scrollable widgets including haptics, keyboard dismissing, and more. Pub package.
{"sdk":"flutter"}{"sdk":"flutter"}^2.0.0English project snapshot. Visit GitHub for the latest content.
ScrollHapticschild is scrolled (during scroll & reaching edge of scroll view).KeyboardDismisschild is scrolled, tapped, or swiped.ScrollableViewIt's hard to display haptics in a gif, but they're there.
https://github.com/mattrltrent/scrollable/blob/main/resources/example.gif?raw=trueflutter pub add scrollableimport 'package:scrollable/exports.dart';Simply wrap whatever you want inside the ScrollHaptics, KeyboardDismiss, or ScrollableView widgets, then edit whatever of their properties you want!
For a full example with context, view the examples tab. It shows just the ScrollableView, but it's the same layout for all 3 widgets.
ScrollHapticsScrollHaptics(
// <Assorted Properties Here>
child: SingleChildScrollView(
child: Column(
children: [
Container(height: 100, width: 100, color: Colors.redAccent),
Container(height: 100, width: 100, color: Colors.blue),
Container(height: 100, width: 100, color: Colors.purple),
],
),
),
);
KeyboardDismissKeyboardDismiss(
// <Assorted Properties Here>
child: SingleChildScrollView(
child: Column(
children: [
Container(height: 100, width: 100, color: Colors.redAccent),
Container(height: 100, width: 100, color: Colors.blue),
Container(height: 100, width: 100, color: Colors.purple),
],
),
),
);
ScrollableViewScrollableView(
// <Assorted Properties Here>
controller: ScrollController(),
child: SingleChildScrollView(
child: Column(
children: [
Container(height: 100, width: 100, color: Colors.redAccent),
Container(height: 100, width: 100, color: Colors.blue),
Container(height: 100, width: 100, color: Colors.purple),
],
),
),
);
ScrollHapticsHighly reccomended to use ClampingScrollPhysics for the physics of whatever scrollable you're wrapping, as it works best with haptics.
child (required): This widget's child.bubbleUpScrollNotifications: Whether the widget should bubble up scroll notifications, or block them.heavyHapticsAtEdgeEnabled: When a scroll reaches the edge, if there should be a haptic effect emitted.hapticEffectAtEdge: Which kind of haptic effect should be emitted when the scroll edge is reached?hapticEffectDuringScroll: Which kind of haptic effect should be emitted during the scroll.distancebetweenHapticEffectsDuringScroll: The distance, in pixels, that should be scrolled before emitting a new haptic scroll effect.KeyboardDismisschild (required): This widget's child.bubbleUpScrollNotifications: Whether the widget should bubble up scroll notifications, or block them.closeKeyboardOnTap: If the keyboard should also be closed just on the widget being tapped.closeKeyboardOnVerticalSwipe: If the keyboard should be closed when a vertical swipe occurs.onKeyboardDismissed: Callback triggered when a dismiss occurs.ScrollableViewchild (required): This widget's child.controller (required): A ScrollController to manage the scrolling of the widget.bubbleUpScrollNotifications: Whether the widget should bubble up scroll notifications, or block them.closeKeyboardOnScroll: Whether the keyboard should be automatically closed on the widget being scrolled.closeKeyboardOnTap: If the keyboard should also be closed just on the widget being tapped.physics: Physics of the scroll view. Highly reccomended to use ClampingScrollPhysics as it works best with haptics.scrollDirection: Direction of the scroll.inlineBottomOrRightPadding: Inline padding of the scroll view. This is a clean substitute to having to add SizedBox widgets inside your scroll view. For the bottom (if vertical) or right (if horizontal) of the scroll view.inlineTopOrLeftPadding: Inline padding of the scroll view. This is a clean substitute to having to add SizedBox widgets inside your scroll view. For the top (if vertical) or left (if horizontal) of the scroll view.padding: Outer padding of the widget.hapticsEnabled: If haptics should be enabled.distancebetweenHapticEffectsDuringScroll: The distance, in pixels, that should be scrolled before emitting a new haptic scroll effect.heavyHapticsAtEdgeEnabled: If the haptics when the edge of the scroll is reached should be enabled or not.hapticEffectAtEdge: Which kind of haptic effect should be emitted when the scroll edge is reached?hapticEffectDuringScroll: Which kind of haptic effect should be emitted during the scroll.primary: Whether this is the primary scroll view associated with the parent PrimaryScrollController.dragStartBehavior: Determines the way that drag start behavior is handled.restorationId: Restoration ID to save and restore the scroll offset of the scrollable.reverse: Whether the scroll view scrolls in the reading direction.closeKeyboardOnVerticalSwipe: If the keyboard should be closed when a vertical swipe occurs.The package is always open to improvements, [suggestions](mailto:me@matthewtrent.me), and additions!
I'll look through PRs and issues as soon as I can!
analytics