diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/utils/log.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/utils/log.dart index 3d5baab30d..9c23060b26 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/utils/log.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/utils/log.dart @@ -4,9 +4,7 @@ import 'package:flutter/material.dart'; const DART_LOG = "Dart_LOG"; class Log { - // static const enableLog = bool.hasEnvironment(DART_LOG); - // static final shared = Log(); - static const enableLog = true; + static const enableLog = false; static void info(String? message) { if (enableLog) { @@ -28,7 +26,7 @@ class Log { static void trace(String? message) { if (enableLog) { - // debugPrint('❗️[Trace] - ${DateTime.now().second}=> $message'); + debugPrint('❗️[Trace] - ${DateTime.now().second}=> $message'); } } } diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board.dart index 20824ba6b9..e07ee39d61 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board.dart @@ -159,7 +159,7 @@ class _BoardContentState extends State { dataSource: widget.dataController, direction: Axis.horizontal, interceptor: interceptor, - children: _buildColumns(), + children: _buildColumns(interceptor.columnKeys), ); return Stack( @@ -191,7 +191,7 @@ class _BoardContentState extends State { ); } - List _buildColumns() { + List _buildColumns(List columnKeys) { final List children = widget.dataController.columnDatas.asMap().entries.map( (item) { @@ -208,21 +208,33 @@ class _BoardContentState extends State { value: widget.dataController.columnController(columnData.id), child: Consumer( builder: (context, value, child) { + final boardColumn = AFBoardColumnWidget( + margin: _marginFromIndex(columnIndex), + itemMargin: widget.config.columnItemPadding, + headerBuilder: widget.headerBuilder, + footBuilder: widget.footBuilder, + cardBuilder: widget.cardBuilder, + dataSource: dataSource, + scrollController: ScrollController(), + phantomController: widget.phantomController, + onReorder: widget.dataController.moveColumnItem, + cornerRadius: widget.config.cornerRadius, + backgroundColor: widget.config.columnBackgroundColor, + ); + + // columnKeys + // .removeWhere((element) => element.columnId == columnData.id); + + // columnKeys.add( + // ColumnKey( + // columnId: columnData.id, + // key: boardColumn.columnGlobalKey, + // ), + // ); + return ConstrainedBox( constraints: widget.columnConstraints, - child: AFBoardColumnWidget( - margin: _marginFromIndex(columnIndex), - itemMargin: widget.config.columnItemPadding, - headerBuilder: widget.headerBuilder, - footBuilder: widget.footBuilder, - cardBuilder: widget.cardBuilder, - dataSource: dataSource, - scrollController: ScrollController(), - phantomController: widget.phantomController, - onReorder: widget.dataController.moveColumnItem, - cornerRadius: widget.config.cornerRadius, - backgroundColor: widget.config.columnBackgroundColor, - ), + child: boardColumn, ); }, ), diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column.dart index cbc537810e..d4e5ff8800 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column.dart @@ -87,7 +87,9 @@ class AFBoardColumnWidget extends StatefulWidget { final Color backgroundColor; - const AFBoardColumnWidget({ + final GlobalKey columnGlobalKey = GlobalKey(); + + AFBoardColumnWidget({ Key? key, this.headerBuilder, this.footBuilder, @@ -136,8 +138,8 @@ class _AFBoardColumnWidgetState extends State { draggableTargetBuilder: PhantomDraggableBuilder(), ); - final reorderFlex = ReorderFlex( - key: widget.key, + Widget reorderFlex = ReorderFlex( + key: widget.columnGlobalKey, scrollController: widget.scrollController, config: widget.config, onDragStarted: (index) { @@ -160,6 +162,9 @@ class _AFBoardColumnWidgetState extends State { children: children, ); + // reorderFlex = + // KeyedSubtree(key: widget.columnGlobalKey, child: reorderFlex); + return Container( margin: widget.margin, clipBehavior: Clip.hardEdge, diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_state.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_state.dart index 250a4eb020..592277afbc 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_state.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_state.dart @@ -132,7 +132,7 @@ class DraggingState { } void updateNextIndex(int index) { - Log.trace('$reorderFlexId updateNextIndex: $index'); + Log.debug('$reorderFlexId updateNextIndex: $index'); nextIndex = index; } diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target.dart index 621179455a..8217d2736f 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target.dart @@ -1,4 +1,3 @@ -import 'package:appflowy_board/src/utils/log.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:provider/provider.dart'; @@ -448,9 +447,9 @@ class _FakeDragTargetState /// Start insert animation widget.insertAnimationController.forward(from: 0.0); - widget.eventTrigger.fakeOnDragStart((insertIndex) { - Log.debug("[$FakeDragTarget] on drag $insertIndex"); - }); + // widget.eventTrigger.fakeOnDragStart((insertIndex) { + // Log.trace("[$FakeDragTarget] on drag $insertIndex"); + // }); widget.eventTrigger.fakeOnDragEnded(() { WidgetsBinding.instance.addPostFrameCallback((_) { diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target_interceptor.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target_interceptor.dart index d3a7e405e8..36366cd1e0 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target_interceptor.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/drag_target_interceptor.dart @@ -55,6 +55,7 @@ class OverlappingDragTargetInterceptor extends DragTargetInterceptor { final String reorderFlexId; final List acceptedReorderFlexId; final OverlapDragTargetDelegate delegate; + final List columnKeys = []; Timer? _delayOperation; OverlappingDragTargetInterceptor({ @@ -87,6 +88,15 @@ class OverlappingDragTargetInterceptor extends DragTargetInterceptor { Log.trace( '[$OverlappingDragTargetInterceptor] move to $dragTargetId at $index'); delegate.moveTo(dragTargetId, dragTargetData, index); + + // final columnIndex = columnKeys + // .indexWhere((element) => element.columnId == dragTargetId); + // if (columnIndex != -1) { + // final state = columnKeys[columnIndex].key.currentState; + // if (state is ReorderFlexState) { + // state.handleOnWillAccept(context, index); + // } + // } } }); } @@ -95,6 +105,12 @@ class OverlappingDragTargetInterceptor extends DragTargetInterceptor { } } +class ColumnKey { + String columnId; + GlobalKey key; + ColumnKey({required this.columnId, required this.key}); +} + abstract class CrossReorderFlexDragTargetDelegate { /// * [reorderFlexId] is the id that the [ReorderFlex] passed in. bool acceptNewDragTargetData( diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/reorder_flex.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/reorder_flex.dart index f84fe8c991..26b68c2304 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/reorder_flex.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_flex/reorder_flex.dart @@ -213,8 +213,8 @@ class ReorderFlexState extends State shiftedIndex = dragState.calculateShiftedIndex(childIndex); } - // Log.trace( - // 'Rebuild: Column:[${dragState.id}] ${dragState.toString()}, childIndex: $childIndex shiftedIndex: $shiftedIndex'); + Log.trace( + 'Rebuild: Column:[${dragState.reorderFlexId}] ${dragState.toString()}, childIndex: $childIndex shiftedIndex: $shiftedIndex'); final currentIndex = dragState.currentIndex; final dragPhantomIndex = dragState.phantomIndex; diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_phantom/phantom_controller.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_phantom/phantom_controller.dart index 45a7ce2392..4dd4f05a74 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_phantom/phantom_controller.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/reorder_phantom/phantom_controller.dart @@ -214,12 +214,6 @@ class BoardPhantomController extends OverlapDragTargetDelegate } else { return 0; } - - if (delegate.controller(dragTargetId)?.columnData.items.isEmpty ?? false) { - return 0; - } else { - return -1; - } } }