diff --git a/example/lib/main.dart b/example/lib/main.dart index 97415b3b..cb73888d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -15,64 +15,65 @@ class MyApp extends StatelessWidget { home: Scaffold( body: ListView( children: [ - Slidable( - // Specify a key if the Slidable is dismissible. - key: const ValueKey(0), + Directionality( + textDirection: TextDirection.rtl, + child: Slidable( + // Specify a key if the Slidable is dismissible. + key: const ValueKey(0), - // The start action pane is the one at the left or the top side. - startActionPane: ActionPane( - // A motion is a widget used to control how the pane animates. - motion: const ScrollMotion(), + // The start action pane is the one at the left or the top side. + startActionPane: ActionPane( + // A motion is a widget used to control how the pane animates. + motion: const ScrollMotion(), - // A pane can dismiss the Slidable. - dismissible: DismissiblePane(onDismissed: () {}), + // A pane can dismiss the Slidable. + dismissible: DismissiblePane(onDismissed: () {}), - // All actions are defined in the children parameter. - children: const [ - // A SlidableAction can have an icon and/or a label. - SlidableAction( - onPressed: doNothing, - backgroundColor: Color(0xFFFE4A49), - foregroundColor: Colors.white, - icon: Icons.delete, - label: 'Delete', - ), - SlidableAction( - onPressed: doNothing, - backgroundColor: Color(0xFF21B7CA), - foregroundColor: Colors.white, - icon: Icons.share, - label: 'Share', - ), - ], - ), + // All actions are defined in the children parameter. + children: const [ + // A SlidableAction can have an icon and/or a label. + SlidableAction( + onPressed: doNothing, + backgroundColor: Color(0xFFFE4A49), + foregroundColor: Colors.white, + icon: Icons.delete, + label: 'Delete', + ), + SlidableAction( + onPressed: doNothing, + backgroundColor: Color(0xFF21B7CA), + foregroundColor: Colors.white, + icon: Icons.share, + label: 'Share', + ), + ], + ), - // The end action pane is the one at the right or the bottom side. - endActionPane: const ActionPane( - motion: ScrollMotion(), - children: [ - SlidableAction( - // An action can be bigger than the others. - flex: 2, - onPressed: doNothing, - backgroundColor: Color(0xFF7BC043), - foregroundColor: Colors.white, - icon: Icons.archive, - label: 'Archive', - ), - SlidableAction( - onPressed: doNothing, - backgroundColor: Color(0xFF0392CF), - foregroundColor: Colors.white, - icon: Icons.save, - label: 'Save', + // The end action pane is the one at the right or the bottom side. + endActionPane: ActionPane( + fromStart: true, + motion: const ScrollMotion(), + dismissible: DismissiblePane( + onDismissed: () {}, + confirmDismiss: () => Future.value(false), ), - ], - ), + children: const [ + SlidableAction( + // An action can be bigger than the others. + flex: 2, + onPressed: doNothing, + backgroundColor: Color(0xFF7BC043), + foregroundColor: Colors.white, + icon: Icons.archive, + label: 'Archive', + ), + ], + ), - // The child of the Slidable is what the user sees when the - // component is not dragged. - child: const ListTile(title: Text('Slide me')), + // The child of the Slidable is what the user sees when the + // component is not dragged. + child: const ListTile(title: Text('Slide me')), + ), ), Slidable( // Specify a key if the Slidable is dismissible. diff --git a/lib/src/action_pane.dart b/lib/src/action_pane.dart index 8a842596..fb13f253 100644 --- a/lib/src/action_pane.dart +++ b/lib/src/action_pane.dart @@ -52,6 +52,7 @@ class ActionPane extends StatefulWidget { this.dragDismissible = true, this.openThreshold, this.closeThreshold, + this.fromStart, required this.children, }) : assert(extentRatio > 0 && extentRatio <= 1), assert( @@ -96,6 +97,9 @@ class ActionPane extends StatefulWidget { /// The actions for this pane. final List children; + /// The actions for this pane. + final bool? fromStart; + @override _ActionPaneState createState() => _ActionPaneState(); @@ -234,7 +238,7 @@ class _ActionPaneState extends State implements RatioConfigurator { actionPaneData: ActionPaneData( alignment: config.alignment, direction: config.direction, - fromStart: config.isStartActionPane, + fromStart: widget.fromStart ?? config.isStartActionPane, extentRatio: widget.extentRatio, children: widget.children, ), diff --git a/lib/src/actions.dart b/lib/src/actions.dart index 3890de2f..1386287a 100644 --- a/lib/src/actions.dart +++ b/lib/src/actions.dart @@ -84,11 +84,12 @@ class CustomSlidableAction extends StatelessWidget { onPressed: () => _handleTap(context), style: OutlinedButton.styleFrom( backgroundColor: backgroundColor, - primary: effectiveForegroundColor, - onSurface: effectiveForegroundColor, + // primary: effectiveForegroundColor, + // onSurface: effectiveForegroundColor, shape: const RoundedRectangleBorder(), side: BorderSide.none, ), + child: child, ), ),