flutter_longpressdrag_fluctuation 0.0.1
flutter_longpressdrag_fluctuation: ^0.0.1 copied to clipboard
Flutter Long Press Drag Fluctuation
Here's a professional and well-structured README.md file for your Flutter package that you can use on GitHub and pub.flutter-io.cn:
LongPressDraggableCard #
A customizable Flutter widget that allows users to drag a card horizontally to increase or decrease a count β perfect for cart quantities, counters, or any use case where a drag gesture adjusts a numeric value.
π½ Demo #
β¨ Features #
- π Horizontal drag gesture for count control
- π Increase or decrease values dynamically
- β
Limit value using
maxCount - π¨ Customizable feedback (
fadeContainer) and UI (child) - β‘ Lightweight and easy to integrate
π¦ Installation #
Add this to your pubspec.yaml:
dependencies:
flutter_longpressdrag_fluctuation: ^1.0.0
Then run:
flutter pub get
π Usage #
LongPressDraggableCard(
axis: Axis.horizontal,
count: quantity,
maxCount: 50,
onChanged: (value) {
setState(() {
quantity = value;
});
},
fadeContainer: Container(
height: 200,
width: 500,
margin: EdgeInsets.all(12),
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("", style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
SizedBox(height: 8),
Text("", style: TextStyle(fontSize: 14, color: Colors.grey[700])),
SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('', style: TextStyle(fontSize: 16)),
Text('', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.green)),
],
),
],
),
),
child: Container(
height: 200,
width: 500,
margin: EdgeInsets.all(12),
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("name", style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
SizedBox(height: 8),
Text("description", style: TextStyle(fontSize: 14, color: Colors.grey[700])),
SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('Qty: $quantity', style: TextStyle(fontSize: 16)),
Text('\$10', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.green)),
],
),
],
),
),
);
π§ Parameters #
| Property | Type | Description |
|---|---|---|
axis |
Axis |
Direction of drag (default: Axis.horizontal) |
count |
int |
Current value to display and update |
maxCount |
int |
Maximum count limit |
onChanged |
Function(int) |
Callback triggered when the count changes |
fadeContainer |
Widget |
Transparent feedback widget shown while dragging |
child |
Widget |
Main card widget shown to the user |
π How it Works #
-
LongPressDraggableCardlistens for long press + horizontal drag. -
Internally, it uses
onDragUpdateto check theoffset.dx:- Positive β increase count
- Negative β decrease count
-
When the drag ends,
onDragEndresets the feedback offset.
π§ͺ Example Use Cases #
- Shopping cart item quantity control
- Rating widgets with adjustable values
- Custom counters
π‘ Tips #
- Always include a transparent
fadeContainerto ensure draggable feedback works. - Use state management (like
setState, Provider, etc.) to persist and respond to value changes.