From 2e0256f305e57c09fa9e0e22965bdf7e6b144111 Mon Sep 17 00:00:00 2001 From: appflowy Date: Fri, 5 Aug 2022 12:51:47 +0800 Subject: [PATCH] fix: inserted index out of boundr --- .../lib/src/widgets/board_column/data_controller.dart | 8 +++++++- .../lib/src/widgets/flex/drag_target_inteceptor.dart | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_board/lib/src/widgets/board_column/data_controller.dart b/frontend/app_flowy/packages/flowy_board/lib/src/widgets/board_column/data_controller.dart index c7ecf2169b..e7c528f772 100644 --- a/frontend/app_flowy/packages/flowy_board/lib/src/widgets/board_column/data_controller.dart +++ b/frontend/app_flowy/packages/flowy_board/lib/src/widgets/board_column/data_controller.dart @@ -71,7 +71,13 @@ class BoardColumnDataController extends ChangeNotifier void insert(int index, ColumnItem item, {bool notify = true}) { Log.debug( '[$BoardColumnDataController] $columnData insert $item at $index'); - columnData._items.insert(index, item); + + if (columnData._items.length > index) { + columnData._items.insert(index, item); + } else { + columnData._items.add(item); + } + if (notify) { notifyListeners(); } diff --git a/frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/drag_target_inteceptor.dart b/frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/drag_target_inteceptor.dart index fc2fc8482c..776722b05d 100644 --- a/frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/drag_target_inteceptor.dart +++ b/frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/drag_target_inteceptor.dart @@ -25,6 +25,11 @@ abstract class ReorderFlexDragTargetInterceptor { abstract class OverlapReorderFlexDragTargetDelegate { void dragTargetDidDisappear(); + bool acceptNewDragTargetData( + String reorderFlexId, + FlexDragTargetData dragTargetData, + int dragTargetIndex, + ); } class OverlapReorderFlexDragTargetInteceptor @@ -54,7 +59,11 @@ class OverlapReorderFlexDragTargetInteceptor if (dragTargetId == dragTargetData.reorderFlexId) { delegate.dragTargetDidDisappear(); } else { - Log.debug('add phantom to $dragTargetId'); + delegate.acceptNewDragTargetData( + dragTargetId, + dragTargetData, + dragTargetIndex, + ); } return true;