letsar / flutter_slidable Goto Github PK
View Code? Open in Web Editor NEWA Flutter implementation of slidable list item with directional slide actions.
License: MIT License
A Flutter implementation of slidable list item with directional slide actions.
License: MIT License
if caption is empty. it will occupied the space?
Hi,
I want to implement a behavior where the action\event is fired automatically after the action box is completely visible (or to a certain extent), without the user having to tap the box. After that the action box is automatically closed back. Can I achieve this using this plugin?
Thank you!
I'm getting following error after update to 0.5.0 version
I/flutter (21118): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (21118): The following NoSuchMethodError was thrown building Slidable(dirty, dependencies:
I/flutter (21118): [_ScrollableScope], state: SlidableState#1c8cb(tickers: tracking 1 ticker)):
I/flutter (21118): The method '[]' was called on null.
I/flutter (21118): Receiver: null
I/flutter (21118): Tried calling: [](Instance of 'SlideActionType')
I/flutter (21118):
I/flutter (21118): When the exception was thrown, this was the stack:
I/flutter (21118): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
I/flutter (21118): #1 SlidableState._dismissThreshold
package:flutter_slidable/…/widgets/slidable.dart:562
I/flutter (21118): #2 SlidableState.build
package:flutter_slidable/…/widgets/slidable.dart:897
I/flutter (21118): #3 StatefulElement.build
package:flutter/…/widgets/framework.dart:3825
I/flutter (21118): #4 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:3739
widget.dismissal
is null in _dismissThreshold
Adding some dummy check for null value in dismissal solves error (no idea why ?? operator is not working when ?. returns null...)
I guess one word is enough to describe the idea ;)
This is not a requirement but better have it in mind since designers will come with it one day or another.
Is this a bug? This behavior is not expected to happen. One example could be a network request inside the slidable's child, where you don't want to call this operation every time the user interacts with the slidable.
Here is a sample code.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Sample",
home: Scaffold(
appBar: AppBar(
title: Text("The child reloads when sliding"),
),
body: Column(
children: <Widget>[
Slidable(
child: StfulChild(),
delegate: SlidableBehindDelegate(),
actions: <Widget>[
Icon(Icons.share),
],
secondaryActions: <Widget>[
Icon(Icons.add),
],
)
],
),
),
);
}
}
class StfulChild extends StatefulWidget {
_StfulChildState createState() => _StfulChildState();
}
class _StfulChildState extends State<StfulChild> {
bool loading = true;
@override
void initState() {
super.initState();
Future.delayed(Duration(seconds: 1)).then((_) {
if (mounted)
setState(() {
loading = false;
});
});
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.green,
height: 100,
child: Center(
child: loading ? CircularProgressIndicator() : Text("Loaded"),
),
);
}
}
This is the error log
V/BoostFramework(15064): BoostFramework() : mPerf = com.qualcomm.qti.Performance@255afe2
I/flutter (15064): ══╡ EXCEPTION CAUGHT BY ANIMATION LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (15064): The following NoSuchMethodError was thrown while notifying status listeners for AnimationController:
I/flutter (15064): The getter 'keepAlive' was called on null.
I/flutter (15064): Receiver: null
I/flutter (15064): Tried calling: keepAlive
I/flutter (15064):
I/flutter (15064): When the exception was thrown, this was the stack:
I/flutter (15064): #0 KeepAlive.applyParentData (package:flutter/src/widgets/sliver.dart:1033)
I/flutter (15064): #1 RenderObjectElement._updateParentData (package:flutter/src/widgets/framework.dart:4509)
I/flutter (15064): #2 ParentDataElement._applyParentData.applyParentDataToChild (package:flutter/src/widgets/framework.dart:3973)
I/flutter (15064): #3 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3688)
I/flutter (15064): #4 ParentDataElement._applyParentData.applyParentDataToChild (package:flutter/src/widgets/framework.dart:3976)
I/flutter (15064): #5 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3688)
I/flutter (15064): #6 ParentDataElement._applyParentData (package:flutter/src/widgets/framework.dart:3979)
I/flutter (15064): #7 ParentDataElement.applyWidgetOutOfTurn (package:flutter/src/widgets/framework.dart:4018)
I/flutter (15064): #8 _AutomaticKeepAliveState._updateParentDataOfChild (package:flutter/src/widgets/automatic_keep_alive.dart:135)
I/flutter (15064): #9 _AutomaticKeepAliveState._addClient (package:flutter/src/widgets/automatic_keep_alive.dart:86)
I/flutter (15064): #10 NotificationListener._dispatch (package:flutter/src/widgets/notification_listener.dart:125)
I/flutter (15064): #11 Notification.visitAncestor (package:flutter/src/widgets/notification_listener.dart:45)
I/flutter (15064): #12 Element.visitAncestorElements (package:flutter/src/widgets/framework.dart:3307)
I/flutter (15064): #13 Notification.dispatch (package:flutter/src/widgets/notification_listener.dart:59)
I/flutter (15064): #14 _SlidableState&State&TickerProviderStateMixin&AutomaticKeepAliveClientMixin._ensureKeepAlive (package:flutter/src/widgets/automatic_keep_alive.dart:345)
I/flutter (15064): #15 _SlidableState&State&TickerProviderStateMixin&AutomaticKeepAliveClientMixin.updateKeepAlive (package:flutter/src/widgets/automatic_keep_alive.dart:366)
I/flutter (15064): #16 SlidableState._handleShowAllActionsStatusChanged (package:flutter_slidable/src/widgets/slidable.dart:996)
I/flutter (15064): #17 _AnimationController&Animation&AnimationEagerListenerMixin&AnimationLocalListenersMixin&AnimationLocalStatusListenersMixin.notifyStatusListeners (package:flutter/src/animation/listener_helpers.dart:161)
I/flutter (15064): #18 AnimationController._checkStatusChanged (package:flutter/src/animation/animation_controller.dart:588)
I/flutter (15064): #19 AnimationController._startSimulation (package:flutter/src/animation/animation_controller.dart:532)
I/flutter (15064): #20 AnimationController.animateWith (package:flutter/src/animation/animation_controller.dart:519)
I/flutter (15064): #21 AnimationController.fling (package:flutter/src/animation/animation_controller.dart:507)
I/flutter (15064): #22 SlidableState.close (package:flutter_slidable/src/widgets/slidable.dart:906)
I/flutter (15064): #23 SlidableState._isScrollingListener (package:flutter_slidable/src/widgets/slidable.dart:928)
I/flutter (15064): #24 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:161)
I/flutter (15064): #25 ValueNotifier.set:value (package:flutter/src/foundation/change_notifier.dart:217)
I/flutter (15064): #26 ScrollPosition.beginActivity (package:flutter/src/widgets/scroll_position.dart:617)
I/flutter (15064): #27 ScrollPositionWithSingleContext.beginActivity (package:flutter/src/widgets/scroll_position_with_single_context.dart:117)
I/flutter (15064): #28 ScrollPositionWithSingleContext.goBallistic (package:flutter/src/widgets/scroll_position_with_single_context.dart:149)
I/flutter (15064): #29 IdleScrollActivity.applyNewDimensions (package:flutter/src/widgets/scroll_activity.dart:149)
I/flutter (15064): #30 ScrollPosition.applyNewDimensions (package:flutter/src/widgets/scroll_position.dart:485)
I/flutter (15064): #31 ScrollPositionWithSingleContext.applyNewDimensions (package:flutter/src/widgets/scroll_position_with_single_context.dart:107)
I/flutter (15064): #32 ScrollPosition.applyContentDimensions (package:flutter/src/widgets/scroll_position.dart:456)
I/flutter (15064): #33 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1242)
I/flutter (15064): #34 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1438)
I/flutter (15064): #35 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:697)
I/flutter (15064): #36 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:270)
I/flutter (15064): #37 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:654)
I/flutter (15064): #38 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208)
I/flutter (15064): #39 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990)
I/flutter (15064): #40 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930)
I/flutter (15064): #41 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842)
I/flutter (15064): #42 _invoke (dart:ui/hooks.dart:128)
I/flutter (15064): #43 _drawFrame (dart:ui/hooks.dart:117)
I/flutter (15064):
I/flutter (15064): The AnimationController notifying status listeners was:
I/flutter (15064): AnimationController#0cb7b(◀ 0.000)
I/flutter (15064): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
I/flutter (15064): Another exception was thrown: NoSuchMethodError: The getter 'keepAlive' was called on null.
Great widget library!
Is it possible to trigger the dismiss animation of the Slidable
when a user taps a SlideAction
?
Something like:
onTap: () {
this.dismiss() // trigger animation of slidable leaving
},
LayoutBuilder
and by using FractionallySizedBox
.Hello! Thank you very much for the library!
There is a question: is it possible to limit the width of the action?
With a wide screen and the parameter actionExtentRatio: 0.25, the actions are very wide.
Would like to present the side buttons to the user for a little while and then close it, all without any touch interactions.
[ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (26409): NoSuchMethodError: The method 'contains' was called on null.
E/flutter (26409): Receiver: null
E/flutter (26409): Tried calling: contains()
E/flutter (26409): #0 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1862)
E/flutter (26409): #1 _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin&RenderSliverHelpers.hitTestBoxChild (package:flutter/src/rendering/sliver.dart:1475)
E/flutter (26409): #2 RenderSliverMultiBoxAdaptor.hitTestChildren (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:455)
E/flutter (26409): #3 RenderSliver.hitTest (package:flutter/src/rendering/sliver.dart:1137)
E/flutter (26409): #4 RenderSliverPadding.hitTestChildren (package:flutter/src/rendering/sliver_padding.dart:266)
E/flutter (26409): #5 RenderSliver.hitTest (package:flutter/src/rendering/sliver.dart:1137)
E/flutter (26409): #6 RenderViewportBase.hitTestChildren (package:flutter/src/rendering/viewport.dart:503)
E/flutter (26409): #7 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #8 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #9 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #10 RenderIgnorePointer.hitTest (package:flutter/src/rendering/proxy_box.dart:2727)
E/flutter (26409): #11 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #12 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #13 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #14 RenderProxyBoxWithHitTestBehavior.hitTest (package:flutter/src/rendering/proxy_box.dart:165)
E/flutter (26409): #15 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #16 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #17 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #18 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #19 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #20 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #21 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #22 RenderCustomPaint.hitTestChildren (package:flutter/src/rendering/custom_paint.dart:500)
E/flutter (26409): #23 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #24 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #25 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #26 _RenderFlex&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2190)
E/flutter (26409): #27 RenderFlex.hitTestChildren (package:flutter/src/rendering/flex.dart:925)
E/flutter (26409): #28 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #29 _RenderCustomMultiChildLayoutBox&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2190)
E/flutter (26409): #30 RenderCustomMultiChildLayoutBox.hitTestChildren (package:flutter/src/rendering/custom_layout.dart:365)
E/flutter (26409): #31 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #32 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #33 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #34 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:118)
E/flutter (26409): #35 RenderBox.hitTest (package:flutter/src/rendering/box.dart:1863)
E/flutter (26409): #36 RenderPhysicalMode
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v0.5.1, on Microsoft Windows [Version 10.0.17134.228], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.0-rc2)
[√] Android Studio (version 3.1)
[√] IntelliJ IDEA Community Edition (version 2018.1)
[√] Connected devices (1 available)
• No issues found!
I trying to make function slidable item's open() work by click on button so I changed to use branch feature/refactor, but this branch require init Slidable with dismissal, without this it crashed with below log.
E/flutter: [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: [](Instance of 'SlideActionType')
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
#1 SlidableState._dismissThreshold (package:flutter_slidable/src/widgets/slidable.dart:562:42)
#2 SlidableState.build (package:flutter_slidable/src/widgets/slidable.dart:897:27)
#3 StatefulElement.build (package:flutter/src/widgets/framework.dart:3825:27)
#4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3739:15)
#5 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
#6 StatefulElement.update (package:flutter/src/widgets/framework.dart:3894:5)
#7 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#8 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14)
#9 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#10 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14)
#11 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#12 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16)
#13 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
#14 StatelessElement.update (package:flutter/src/widgets/framework.dart:3796:5)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16)
#17 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
#18 ProxyElement.update (package:flutter/src/widgets/framework.dart:4006:5)
#19 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#20 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16)
#21 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
#22 StatefulElement.update (package:flutter/src/widgets/framework.dart:3894:5)
#23 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#24 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1034:36)
#25 SliverMultiBoxAdaptorElement.performRebuild.processElement (package:flutter/src/widgets/sliver.dart:984:34)
#26 List.forEach (dart:core-patch/growable_array.dart:278:8)
#27 SliverMultiBoxAdaptorElement.performRebuild (package:flutter/src/widgets/sliver.dart:995:36)
#28 SliverMultiBoxAdaptorElement.update (package:flutter/src/widgets/sliver.dart:961:7)
#29 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#30 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16)
#31 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
#32 ProxyElement.update (package:flutter/src/widgets/framework.dart:4006:5)
#33 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#34 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14)
#35 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#36 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4601:32)
#37 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4992:17)
#38 _ViewportElement.update (package:flutter/src/widgets/viewport.dart:192:11)
#39 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#40 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14)
#41 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#42 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14)
#43 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
#44 SingleChildRenderObjectElement.update (pack
Please help me, thanks
Thank you for an awesome Flutter implementation!
Is it possible to open the drawer and show all the iconslider actions through a onTap event on the Slidable? See the scenario on the two images below:
Currently the only example that is given is to close the drawer as seen in Issue 33:
#33
However, if the Slidable is not in an activestate, the output of:
slidableController.activeState is null, and hence I am not able to do:
slidableController.activeState.open() because it will simply say:
"The method 'open' was called on null"
I tested with your sample file and delete every row on the table doing a full swipe
I got an alert "item will be deleted" After that the application stop responding
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
/flutter (30767): ══╡ EXCEPTION CAUGHT BY ANIMATION LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (30767): The following assertion was thrown while notifying status listeners for AnimationController:
I/flutter (30767): Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): At this point the state of the widget's element tree is no longer stable. To safely refer to a
I/flutter (30767): widget's ancestor in its dispose() method, save a reference to the ancestor by calling
I/flutter (30767): inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
I/flutter (30767):
I/flutter (30767): When the exception was thrown, this was the stack:
I/flutter (30767): #0 Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure> (package:flutter/src/widgets/framework.dart:3215:9)
I/flutter (30767): #1 Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3224:6)
I/flutter (30767): #2 Element.visitAncestorElements (package:flutter/src/widgets/framework.dart:3305:12)
I/flutter (30767): #3 Notification.dispatch (package:flutter/src/widgets/notification_listener.dart:59:12)
I/flutter (30767): #4 _SlidableState&State&TickerProviderStateMixin&AutomaticKeepAliveClientMixin._ensureKeepAlive (package:flutter/src/widgets/automatic_keep_alive.dart:345:49)
I/flutter (30767): #5 _SlidableState&State&TickerProviderStateMixin&AutomaticKeepAliveClientMixin.updateKeepAlive (package:flutter/src/widgets/automatic_keep_alive.dart:366:9)
I/flutter (30767): #6 SlidableState._handleShowAllActionsStatusChanged (package:flutter_slidable/src/widgets/slidable.dart:993:5)
I/flutter (30767): #7 _AnimationController&Animation&AnimationEagerListenerMixin&AnimationLocalListenersMixin&AnimationLocalStatusListenersMixin.notifyStatusListeners (package:flutter/src/animation/listener_helpers.dart:161:19)
I/flutter (30767): #8 AnimationController._checkStatusChanged (package:flutter/src/animation/animation_controller.dart:531:7)
I/flutter (30767): #9 AnimationController._startSimulation (package:flutter/src/animation/animation_controller.dart:475:5)
I/flutter (30767): #10 AnimationController.animateWith (package:flutter/src/animation/animation_controller.dart:462:12)
I/flutter (30767): #11 AnimationController.fling (package:flutter/src/animation/animation_controller.dart:450:12)
I/flutter (30767): #12 SlidableState.close (package:flutter_slidable/src/widgets/slidable.dart:903:28)
I/flutter (30767): #13 SlidableController.activeState= (package:flutter_slidable/src/widgets/slidable.dart:593:19)
I/flutter (30767): #14 SlidableState.dispose (package:flutter_slidable/src/widgets/slidable.dart:889:24)
I/flutter (30767): #15 StatefulElement.unmount (package:flutter/src/widgets/framework.dart:3833:12)
I/flutter (30767): #16 _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1697:13)
I/flutter (30767): #17 _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1695:7)
I/flutter (30767): #18 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4654:14)
I/flutter (30767): #19 _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1693:13)
I/flutter (30767): #20 ListIterable.forEach (dart:_internal/iterable.dart:39:13)
I/flutter (30767): #21 _InactiveElements._unmountAll (package:flutter/src/widgets/framework.dart:1706:25)
I/flutter (30767): #22 BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2341:27)
I/flutter (30767): #23 BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2173:15)
I/flutter (30767): #24 BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:2340:7)
I/flutter (30767): #25 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:655:18)
I/flutter (30767): #26 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:214:5)
I/flutter (30767): #27 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter (30767): #28 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter (30767): #29 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter (30767): #30 _invoke (dart:ui/hooks.dart:128:13)
I/flutter (30767): #31 _drawFrame (dart:ui/hooks.dart:117:3)
I/flutter (30767):
I/flutter (30767): The AnimationController notifying status listeners was:
I/flutter (30767): AnimationController#305da(◀ 1.000)
I/flutter (30767): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
I/flutter (30767): Another exception was thrown: NoSuchMethodError: The method 'stop' was called on null.
While sliding a Slidable, it sometimes throws the following exception:
I/flutter (13152): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (13152): The following RangeError was thrown building AnimatedBuilder(animation: AnimationController#4bf67(▶
I/flutter (13152): 0.191; paused), dirty, state: _AnimatedState#6161d):
I/flutter (13152): RangeError (index): Invalid value: Only valid value is 0: 1
I/flutter (13152):
I/flutter (13152): When the exception was thrown, this was the stack:
I/flutter (13152): #0 List.[] (dart:core/runtime/libgrowable_array.dart:141:60)
I/flutter (13152): #1 SlidableDrawerDelegate.buildStackActions... (package:flutter_slidable/src/widgets/slidable.dart:571:63)
I/flutter (13152): #2 new List.generate (dart:core/list.dart:162:28)
I/flutter (13152): #3 SlidableDrawerDelegate.buildStackActions.. (package:flutter_slidable/src/widgets/slidable.dart:565:32)
I/flutter (13152): #4 AnimatedBuilder.build (package:flutter/src/widgets/transitions.dart:633:12)
I/flutter (13152): #5 _AnimatedState.build (package:flutter/src/widgets/transitions.dart:96:48)
I/flutter (13152): #6 StatefulElement.build (package:flutter/src/widgets/framework.dart:3730:27)
I/flutter (13152): #7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3642:15)
I/flutter (13152): #8 Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
I/flutter (13152): #9 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2242:33)
I/flutter (13152): #10 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:626:20)
I/flutter (13152): #11 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter (13152): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter (13152): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter (13152): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter (13152): #15 _invoke (dart:ui/hooks.dart:120:13)
I/flutter (13152): #16 _drawFrame (dart:ui/hooks.dart:109:3)
Hello @letsar
My flutter app have a list of items (each one is a Slidable Object). I would like to execute a callback event when user start sliding the item.
My case: when I slide right to left (to show some secondary actions), I would like to hide a button in the screen. When user slide left to right (to hide secondary actions), I would like to show this button again.
I looked the source code and FAQ and didn't find anything. Am I missing something?
A SlidableController
could open/close any Slidable
.
This can be useful if we want to close Slidable
s while scrolling, or if we want to close all the other Slidable
s while opening one.
Great work! Really useful
A few requests to make the package even better
I know most of these options are available if using the customizable "SlideAction" widget but it would be nice if the IconSlideAction could have these additions.
Hi, Thanks for great plugin.
In my Slidable -> secondaryActions: [ -> I have a 3 IconSlideAction. If user slides the ListTile it shows this 3 IconSlideAction widget. If I tap same time to 2 or 3 icons its opens all of them. I have to close 1 by 1. again if accidentally press between 2 icon it opens both. How can activate 1 action at a time? Thanks
hi, it doesn't seem to work.
while I defined it correctly in the ctor I can still open several items and they all remain opened (I expected the other to auto close when another one is opened).
code:
...
final SlidableController slidableController = new SlidableController();
...
child: Slidable(
key: Key(_row.animalID),
controller: slidableController,
delegate: new SlidableBehindDelegate(),
actionExtentRatio: 0.25,
secondaryActions: [
....
It seems width of SlideAction is static. I tried to change width of SlideAction by changing child' Container width. But it doesn't work for me.
Is there any way to change width of SlideAction?
It's not closing when onTap is triggered.
Hi is it possible to dismiss row on button tap?
I would like to display confirmation dialog first and if user hit ok, dismiss the row.
Thank you!
Like for form fields I need to enable/disable the slide behaviour.
Here is a trivial example:
https://gist.github.com/abacaj/dabe0948d0b070306881e69a8a11d0c5
Nothing special, just generating the items and showing a slidable widget... when scrolling down and trying to push a view to Navigator
the widget breaks and gives this exception from flutter listview
:
I/flutter ( 9039): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2798 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
Here is a video of the issue happening in Android:
https://streamable.com/288te
Steps to reproduce:
Not sure what I've done wrong here, the code is very trivial.
There are circumstances when you don't want a widget to be slidable all the item, rather conditionally.
A field enabled
that takes a boolean would be much appreciated. When true (by default), sliding is allowed to happen, otherwise no sliding can occur.
I want to have an onTap to dismiss without SlideToDismiss because I dont want user to slide for dismiss. As for now, I only can enable the state.dismiss() if the state.dismissible is true. But state.dismissible is only true if slideToDismiss is not null. Please help to make state.dismiss() without slide to dismiss. Thanks
In iOS, clicking on a button will also close the slidable. This makes sense, since for example deleting a record will result in the next row being displayed in the slidable otherwise.
This error happens when I have a List with a lot of element around 1000 elements and scrolled of them very fast,
flutter_slidable 0.4.5
---Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v0.8.1-pre.51, on Microsoft Windows [Versión 10.0.17134.112], locale es-MX)
[!] Android toolchain - develop for Android devices (Android SDK 27.0.3)
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[√] Android Studio (version 3.1)
[√] VS Code (version 1.27.1)
[√] VS Code, 64-bit edition (version 1.26.1)
[√] Connected devices (1 available)
I/flutter ( 6914): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 6914): The following assertion was thrown building NotificationListener:
I/flutter ( 6914): 'package:flutter/src/rendering/object.dart': Failed assertion: line 2798 pos 14:
I/flutter ( 6914): '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6914):
I/flutter ( 6914): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 6914): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 6914): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 6914): https://github.com/flutter/flutter/issues/new
I/flutter ( 6914):
I/flutter ( 6914): When the exception was thrown, this was the stack:
I/flutter ( 6914): #2 _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin._insertIntoChildList (package:flutter/src/rendering/object.dart:2798:14)
I/flutter ( 6914): #3 _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin.insert (package:flutter/src/rendering/object.dart:2832:5)
I/flutter ( 6914): #4 RenderSliverMultiBoxAdaptor.insert (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:209:11)
I/flutter ( 6914): #5 SliverMultiBoxAdaptorElement.insertChildRenderObject (package:flutter/src/widgets/sliver.dart:932:18)
I/flutter ( 6914): #6 RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:4525:35)
I/flutter ( 6914): #7 RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4291:5)
I/flutter ( 6914): #8 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4665:11)
I/flutter ( 6914): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
I/flutter ( 6914): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
I/flutter ( 6914): #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #12 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
I/flutter ( 6914): #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
I/flutter ( 6914): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
I/flutter ( 6914): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
I/flutter ( 6914): #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #18 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
I/flutter ( 6914): #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
I/flutter ( 6914): #21 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3967:11)
I/flutter ( 6914): #22 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
I/flutter ( 6914): #23 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
I/flutter ( 6914): #24 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #25 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #26 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
I/flutter ( 6914): #27 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
I/flutter ( 6914): #28 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
I/flutter ( 6914): #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
I/flutter ( 6914): #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
I/flutter ( 6914): #31 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:811:36)
I/flutter ( 6914): #32 SliverMultiBoxAdaptorElement.performRebuild (package:flutter/src/widgets/sliver.dart:769:34)
I/flutter ( 6914): #33 SliverMultiBoxAdaptorElement.update (package:flutter/src/widgets/sliver.dart:738:7)
I/flutter ( 6914): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #36 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #37 ProxyElement.update (package:flutter/src/widgets/framework.dart:3921:5)
I/flutter ( 6914): #38 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #39 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #41 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4391:32)
I/flutter ( 6914): #42 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4781:17)
I/flutter ( 6914): #43 _ViewportElement.update (package:flutter/src/widgets/viewport.dart:192:11)
I/flutter ( 6914): #44 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #45 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #46 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #47 ProxyElement.update (package:flutter/src/widgets/framework.dart:3921:5)
I/flutter ( 6914): #48 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #49 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #50 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #51 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #52 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #53 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #54 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #55 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #56 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #57 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #58 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #59 StatefulElement.update (package:flutter/src/widgets/framework.dart:3811:5)
I/flutter ( 6914): #60 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #61 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #62 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #63 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #64 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #65 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #66 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #67 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
I/flutter ( 6914): #68 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #69 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #70 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #71 StatelessElement.update (package:flutter/src/widgets/framework.dart:3714:5)
I/flutter ( 6914): #72 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #74 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #75 StatefulElement.update (package:flutter/src/widgets/framework.dart:3811:5)
I/flutter ( 6914): #76 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #77 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #78 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #79 StatefulElement.update (package:flutter/src/widgets/framework.dart:3811:5)
I/flutter ( 6914): #80 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #81 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #82 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #83 StatelessElement.update (package:flutter/src/widgets/framework.dart:3714:5)
I/flutter ( 6914): #84 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #85 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4391:32)
I/flutter ( 6914): #86 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4781:17)
I/flutter ( 6914): #87 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
I/flutter ( 6914): #88 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
I/flutter ( 6914): #89 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
I/flutter ( 6914): #90 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2255:33)
I/flutter ( 6914): #91 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:653:20)
I/flutter ( 6914): #92 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter ( 6914): #93 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 6914): #94 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 6914): #95 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter ( 6914): #96 _invoke (dart:ui/hooks.dart:128:13)
I/flutter ( 6914): #97 _drawFrame (dart:ui/hooks.dart:117:3)
I/flutter ( 6914): (elided 2 frames from class _AssertionError)
I/flutter ( 6914): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 6914): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2798 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6914): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2798 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6914): Another exception was thrown: A RenderSliverPadding expected a child of type RenderSliver but received a child of type RenderErrorBox.
I/flutter ( 6914): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3509 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6914): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3509 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
Slidable widget doesn't seem to work alongside ReorderableListView. When I use it alongside ReorderableListView, the slide gestures (left swipe, right swipe) do not have any effect. A fix for this would be very useful for those who want the convenience of having slidable menus alongside the ability to rearrange list items.
Thanks for doing such an great job with this widget.
One of the most common iOS actions is to slide a row across and then tap on delete.
Then (after possibly prompting the user) programmatically triggering an animation that removes the row (similar to the way the Dismissible widget animates).
Any thoughts about how one might go about implementing this functionality?
From my point of view, opening the slideable is at first not pretty ease (if you compare it to WhatsApp / Telegram), but it gets wonderful smooth if I set howAllActionsThreshold: 0.20
. Is there a same kind of threshold for swiping the items back in? Guess we need two thresholds then?
How to change a Silidable child's textstyle when it closes or opens?
First of all thanks for awesome work!
I'm new for Flutter and making demo just for learning purpose.
Just one issue got in my code the left and right side icons display out of range means its override on divider. Look at below Image.
And below is my code.
Widget setupListTile(User userdata, int index) {
return new Slidable(
delegate: new SlidableDrawerDelegate(),
actionExtentRatio: 0.25,
child: Column(children: <Widget>[
ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blueAccent,
child: Text(userdata.name[0].toUpperCase(),
style: TextStyle(color: Colors.white)),
),
title: Text('${userdata.name}'),
subtitle: Text(userdata.company.name),
onTap: () {
_showSnackBar("Hey ${userdata.name}, How are you?");
},
),
Divider()
]),
actions: <Widget>[
new IconSlideAction(
caption: 'Archive',
color: Colors.blue,
icon: Icons.archive,
onTap: () => _showSnackBar('Archive'),
),
new IconSlideAction(
caption: 'Share',
color: Colors.indigo,
icon: Icons.share,
onTap: () => _showSnackBar('Share'),
),
],
secondaryActions: <Widget>[
new IconSlideAction(
caption: 'More',
color: Colors.black45,
icon: Icons.more_horiz,
onTap: () => _showSnackBar('More'),
),
new IconSlideAction(
caption: 'Delete',
color: Colors.red,
icon: Icons.delete,
onTap: () => _showSnackBar('Delete'),
),
],
);
}
Kindly guide me where I need to change?
Hi!
Would it be possible to close a Slidable when another Slidable is slided?
Thanks!
Hi,
I'm using only secondary actions in that only second IconSlideAction ontap is working first one is not working
It seems the slidable couldn't be hidden when I tap the screen.
If you use this plugin into a tabView, you'll not be able to swipe to change tab, even if you use only one side of Slidable. It should not stop propagation of swipe event if no action is define for the given orientation
Hi,
First of all, thanks for creating this widget!
I've run into a small issue when using a Slidable
widget that has a child containing a FutureBuilder
widget, and I hope this an appropriate place to ask. Here is the code (slightly shortened) in question:
return Slidable(
delegate: SlidableScrollDelegate(),
actionExtentRatio: 0.25,
secondaryActions: <Widget>[
IconSlideAction(
caption: 'Delete',
color: Colors.red,
icon: Icons.delete,
onTap: () => removeLocation(location),
),
],
child: ListTile(
onTap: () {
Navigator.pushNamed(context, Routes.closeUp);
},
leading: FutureBuilder<WeatherData>(
future: location.weatherData,
builder: (context, snapshot) {
if (snapshot.hasData) {
return SizedBox(
width: 64.0,
height: 64.0,
child: ClipRRect(
borderRadius: BorderRadius.circular(64.0),
child: Image(
image: NetworkImage(snapshot.data.iconUrl),
),
),
);
}
return CircularProgressIndicator();
}),
),
);
Now, this works fine however when the screen is redrawn (after a tap anywhere on the screen, for example), there is a slight flicker caused by (I think) the FutureBuilder
going back to the ConnectionState.waiting
status.
The FutureBuilder
docs state the following which I think could be related:
A side-effect of this is that providing a new but already-completed future to a FutureBuilder will result in a single frame in the ConnectionState.waiting state. This is because there is no way to synchronously determine that a Future has already completed.
The futures I'm passing into the FutureBuilder
are not being changed on my end (When I move the ListTile
widget outside of the Slidable
widget, the flicker goes away), but I was wondering if perhaps there might be something going on under the hood in Slidable
that is causing this state to be affected.
If you have any ideas/suggestions as to what might be going on, or ways to avoid the flickering, it would be much appreciated.
Thanks.
Adding a callback function for IconSlideAction to onTap doesn't work no matter what I do.
So the idea would be using an itemBuilder for SlideAction that mimics the AnimatedList so we can access the Animation when creating the child. This way I can also animate Opacity in my case.
Hello!
I want to use slideable on a list of cards, but since the Card Widget has a rounder border than the slidable Widget, it looks very odd. I originally wanted to make a fork that had the correct border with elevation and more "round" edges, but I can't find the lines where you define the border of the slidable. I therefore do not know what to change. I know it is a small issue, but any help is still greatly appreciated. Thanks in advance.
helllo, thank you for shared. see the problem when i integration to preject in my project. how to solve this issues. (my english not good so sory)
this problem output:
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
help me please
Hi,
When i call setState on onTap, the slider close promptly, and not by sliding back.
IconSlideAction( caption: 'Modifier', color: spYellow, icon: Icons.create, onTap: () { setState(() { titleController.text = session.title; }); showDialog( context: context, child: popupUpsertSession(session, _update) ); }, )
It's a minor detail, but if you can fix it,
Have a nice day !
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.