DavideBelsole / great_list_view

pub.dev library for flutter
MIT License
41 stars 22 forks source link

Issue: List item freezes when reordering an item to last position in Reorderable Tree View (Example 9) #40

Open whiteseppel opened 1 year ago

whiteseppel commented 1 year ago

In the Reorderable Tree View (using Example 9 provided in the readme), when taking an item and moving it to the last slot of the parent item, the item freezes and an Exception is thrown:

======== Exception caught by gesture ===============================================================
The following assertion was thrown while handling a gesture:
'package:great_list_view/tree_list_adapter.dart': Failed assertion: line 318 pos 12: 'position >= 0 && position <= childrenCount(parentNode)': is not true.

When the exception was thrown, this was the stack: 
#2      TreeListAdapter.notifyNodeInserting (package:great_list_view/tree_list_adapter.dart:318:12)
#3      TreeListAdapter.notifyNodeMoving (package:great_list_view/tree_list_adapter.dart:473:5)
#4      Body.build.<anonymous closure> (package:poc_list/main.dart:67:19)
#5      AnimatedListReorderModel.onReorderComplete (package:great_list_view/src/widgets.dart:548:27)
#6      AnimatedRenderSliverMultiBoxAdaptor.reorderStop (package:great_list_view/src/sliver_list.dart:346:52)
#7      AnimatedSliverMultiBoxAdaptorElement.notifyStopReorder (package:great_list_view/src/child_manager.dart:787:18)
#8      AnimatedListController.notifyStopReorder (package:great_list_view/src/child_manager.dart:1045:17)
#9      LongPressReorderable._onLongPressEnd (package:great_list_view/src/widgets.dart:470:17)
#10     LongPressReorderable.build.<anonymous closure> (package:great_list_view/src/widgets.dart:477:32)
#11     LongPressGestureRecognizer._checkLongPressEnd.<anonymous closure> (package:flutter/src/gestures/long_press.dart:798:71)
#12     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253:24)
#13     LongPressGestureRecognizer._checkLongPressEnd (package:flutter/src/gestures/long_press.dart:798:11)
#14     LongPressGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/long_press.dart:636:9)
#15     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:615:9)
#16     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
#17     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:143:9)
#18     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:625:13)
#19     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
#20     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
#21     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:460:19)
#22     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22)
#23     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:336:11)
#24     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7)
#25     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5)
#26     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7)
#27     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7)
#28     _invoke1 (dart:ui/hooks.dart:164:13)
#29     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:361:7)
#30     _dispatchPointerDataPacket (dart:ui/hooks.dart:91:31)
(elided 2 frames from class _AssertionError)
Handler: "onLongPressEnd"
Recognizer: LongPressGestureRecognizer#1cefa
  debugOwner: GestureDetector
  state: possible
====================================================================================================

Screenshot_1692872520

It is still possible to add and remove items from the list by using the "+" and "-" buttons except for the item that is frozen.

Screenshot_1692872528