chore: update import path

This commit is contained in:
appflowy
2022-08-07 10:46:31 +08:00
parent c035c9cf93
commit 621c9615a1
11 changed files with 116 additions and 61 deletions

View File

@ -9,7 +9,18 @@ class MultiBoardListExample extends StatefulWidget {
} }
class _MultiBoardListExampleState extends State<MultiBoardListExample> { class _MultiBoardListExampleState extends State<MultiBoardListExample> {
final BoardDataController boardDataController = BoardDataController(); final BoardDataController boardDataController = BoardDataController(
onMoveColumn: (fromIndex, toIndex) {
debugPrint('Move column from $fromIndex to $toIndex');
},
onMoveColumnItem: (columnId, fromIndex, toIndex) {
debugPrint('Column:$columnId move item from $fromIndex to $toIndex');
},
onMoveColumnItemToColumn: (fromColumnId, fromIndex, toColumnId, toIndex) {
debugPrint(
'Column:$fromColumnId move item at $fromIndex to column:$toColumnId $toIndex');
},
);
@override @override
void initState() { void initState() {
@ -34,9 +45,9 @@ class _MultiBoardListExampleState extends State<MultiBoardListExample> {
TextItem("D"), TextItem("D"),
]); ]);
boardDataController.setColumnData(column1); boardDataController.addColumn(column1);
boardDataController.setColumnData(column2); boardDataController.addColumn(column2);
boardDataController.setColumnData(column3); boardDataController.addColumn(column3);
super.initState(); super.initState();
} }

View File

@ -20,7 +20,7 @@ class _SingleBoardListExampleState extends State<SingleBoardListExample> {
TextItem("d"), TextItem("d"),
]); ]);
boardData.setColumnData(column); boardData.addColumn(column);
super.initState(); super.initState();
} }

View File

@ -1,6 +1,5 @@
library flowy_board; library flowy_board;
export 'src/widgets/board_column/board_column.dart'; export 'src/widgets/board_column/board_column_data.dart';
export 'src/widgets/board_column/data_controller.dart';
export 'src/widgets/board.dart';
export 'src/widgets/board_data.dart'; export 'src/widgets/board_data.dart';
export 'src/widgets/board.dart';

View File

@ -6,7 +6,7 @@ const DART_LOG = "Dart_LOG";
class Log { class Log {
// static const enableLog = bool.hasEnvironment(DART_LOG); // static const enableLog = bool.hasEnvironment(DART_LOG);
// static final shared = Log(); // static final shared = Log();
static const enableLog = true; static const enableLog = false;
static void info(String? message) { static void info(String? message) {
if (enableLog) { if (enableLog) {
@ -22,7 +22,7 @@ class Log {
static void trace(String? message) { static void trace(String? message) {
if (enableLog) { if (enableLog) {
debugPrint('❗️[Trace]=> $message'); // debugPrint('❗️[Trace]=> $message');
} }
} }
} }

View File

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'board_column/board_column.dart';
import 'board_column/board_column_data.dart';
import 'board_data.dart';
import 'flex/drag_target_inteceptor.dart'; import 'flex/drag_target_inteceptor.dart';
import 'flex/reorder_flex.dart'; import 'flex/reorder_flex.dart';
import 'phantom/phantom_controller.dart'; import 'phantom/phantom_controller.dart';
import '../../flowy_board.dart';
import '../rendering/board_overlay.dart'; import '../rendering/board_overlay.dart';
class Board extends StatelessWidget { class Board extends StatelessWidget {
@ -122,7 +124,8 @@ class BoardContent extends StatefulWidget {
} }
class _BoardContentState extends State<BoardContent> { class _BoardContentState extends State<BoardContent> {
final GlobalKey _columnContainerOverlayKey = GlobalKey(debugLabel: '$BoardContent overlay key'); final GlobalKey _columnContainerOverlayKey =
GlobalKey(debugLabel: '$BoardContent overlay key');
late BoardOverlayEntry _overlayEntry; late BoardOverlayEntry _overlayEntry;
@override @override
@ -215,7 +218,8 @@ class _BoardColumnDataSourceImpl extends BoardColumnDataDataSource {
}); });
@override @override
BoardColumnData get columnData => dataController.columnController(columnId).columnData; BoardColumnData get columnData =>
dataController.columnController(columnId).columnData;
@override @override
List<String> get acceptedColumnIds => dataController.columnIds; List<String> get acceptedColumnIds => dataController.columnIds;

View File

@ -6,7 +6,7 @@ import '../../utils/log.dart';
import '../phantom/phantom_controller.dart'; import '../phantom/phantom_controller.dart';
import '../flex/reorder_flex.dart'; import '../flex/reorder_flex.dart';
import '../flex/drag_target_inteceptor.dart'; import '../flex/drag_target_inteceptor.dart';
import 'data_controller.dart'; import 'board_column_data.dart';
typedef OnColumnDragStarted = void Function(int index); typedef OnColumnDragStarted = void Function(int index);

View File

@ -2,16 +2,33 @@ import 'dart:collection';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import '../../flowy_board.dart';
import '../utils/log.dart'; import '../utils/log.dart';
import 'board_column/board_column_data.dart';
import 'flex/reorder_flex.dart'; import 'flex/reorder_flex.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'phantom/phantom_controller.dart'; import 'phantom/phantom_controller.dart';
@protected typedef OnMoveColumn = void Function(int fromIndex, int toIndex);
typedef OnMoveColumnItem = void Function(
String columnId,
int fromIndex,
int toIndex,
);
typedef OnMoveColumnItemToColumn = void Function(
String fromColumnId,
int fromIndex,
String toColumnId,
int toIndex,
);
class BoardDataController extends ChangeNotifier class BoardDataController extends ChangeNotifier
with EquatableMixin, BoardPhantomControllerDelegate, ReoderFlextDataSource { with EquatableMixin, BoardPhantomControllerDelegate, ReoderFlextDataSource {
final List<BoardColumnData> _columnDatas = []; final List<BoardColumnData> _columnDatas = [];
final OnMoveColumn? onMoveColumn;
final OnMoveColumnItem? onMoveColumnItem;
final OnMoveColumnItemToColumn? onMoveColumnItemToColumn;
List<BoardColumnData> get columnDatas => _columnDatas; List<BoardColumnData> get columnDatas => _columnDatas;
@ -21,9 +38,13 @@ class BoardDataController extends ChangeNotifier
final LinkedHashMap<String, BoardColumnDataController> _columnControllers = final LinkedHashMap<String, BoardColumnDataController> _columnControllers =
LinkedHashMap(); LinkedHashMap();
BoardDataController(); BoardDataController({
this.onMoveColumn,
this.onMoveColumnItem,
this.onMoveColumnItemToColumn,
});
void setColumnData(BoardColumnData columnData) { void addColumn(BoardColumnData columnData) {
final controller = BoardColumnDataController(columnData: columnData); final controller = BoardColumnDataController(columnData: columnData);
_columnDatas.add(columnData); _columnDatas.add(columnData);
_columnControllers[columnData.id] = controller; _columnControllers[columnData.id] = controller;
@ -36,6 +57,7 @@ class BoardDataController extends ChangeNotifier
void moveColumn(int fromIndex, int toIndex) { void moveColumn(int fromIndex, int toIndex) {
final columnData = _columnDatas.removeAt(fromIndex); final columnData = _columnDatas.removeAt(fromIndex);
_columnDatas.insert(toIndex, columnData); _columnDatas.insert(toIndex, columnData);
onMoveColumn?.call(fromIndex, toIndex);
notifyListeners(); notifyListeners();
} }
@ -44,10 +66,12 @@ class BoardDataController extends ChangeNotifier
assert(columnController != null); assert(columnController != null);
if (columnController != null) { if (columnController != null) {
columnController.move(fromIndex, toIndex); columnController.move(fromIndex, toIndex);
onMoveColumnItem?.call(columnId, fromIndex, toIndex);
} }
} }
@override @override
@protected
void swapColumnItem( void swapColumnItem(
String fromColumnId, String fromColumnId,
int fromColumnIndex, int fromColumnIndex,
@ -55,11 +79,17 @@ class BoardDataController extends ChangeNotifier
int toColumnIndex, int toColumnIndex,
) { ) {
final item = columnController(fromColumnId).removeAt(fromColumnIndex); final item = columnController(fromColumnId).removeAt(fromColumnIndex);
assert( assert(
columnController(toColumnId).items[toColumnIndex] is PhantomColumnItem); columnController(toColumnId).items[toColumnIndex] is PhantomColumnItem);
columnController(toColumnId).replace(toColumnIndex, item); columnController(toColumnId).replace(toColumnIndex, item);
onMoveColumnItemToColumn?.call(
fromColumnId,
fromColumnIndex,
toColumnId,
toColumnIndex,
);
} }
@override @override
@ -80,6 +110,7 @@ class BoardDataController extends ChangeNotifier
UnmodifiableListView(_columnDatas); UnmodifiableListView(_columnDatas);
@override @override
@protected
bool removePhantom(String columnId) { bool removePhantom(String columnId) {
final columnController = this.columnController(columnId); final columnController = this.columnController(columnId);
final index = columnController.items.indexWhere((item) => item.isPhantom); final index = columnController.items.indexWhere((item) => item.isPhantom);
@ -95,6 +126,7 @@ class BoardDataController extends ChangeNotifier
} }
@override @override
@protected
void updatePhantom(String columnId, int newIndex) { void updatePhantom(String columnId, int newIndex) {
final columnDataController = columnController(columnId); final columnDataController = columnController(columnId);
final index = final index =
@ -111,6 +143,7 @@ class BoardDataController extends ChangeNotifier
} }
@override @override
@protected
void insertPhantom(String columnId, int index, PhantomColumnItem item) { void insertPhantom(String columnId, int index, PhantomColumnItem item) {
columnController(columnId).insert(index, item); columnController(columnId).insert(index, item);
} }

View File

@ -327,29 +327,16 @@ class _FakeDragTargetState<T extends DragTargetData>
@override @override
void initState() { void initState() {
widget.insertAnimationController.addStatusListener( widget.insertAnimationController.addStatusListener(
(status) { _onInsertedAnimationStatusChanged,
if (status != AnimationStatus.completed) return;
if (!mounted) return;
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
simulateDragging = true;
widget.deleteAnimationController.reverse(from: 1.0);
widget.onWillAccept(widget.eventData.dragTargetData as T);
widget.onDragStarted(
widget.child,
widget.eventData.index,
widget.eventData.feedbackSize,
);
});
});
},
); );
/// Start insert animation
widget.insertAnimationController.forward(from: 0.0); widget.insertAnimationController.forward(from: 0.0);
widget.eventTrigger.fakeOnDragEnded(() { widget.eventTrigger.fakeOnDragEnded(() {
if (mounted) { WidgetsBinding.instance.addPostFrameCallback((_) {
widget.onDragEnded(widget.eventData.dragTargetData as T); widget.onDragEnded(widget.eventData.dragTargetData as T);
} });
}); });
super.initState(); super.initState();
@ -357,17 +344,40 @@ class _FakeDragTargetState<T extends DragTargetData>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final child = IgnorePointerWidget( if (simulateDragging) {
useIntrinsicSize: !simulateDragging, child: widget.child); return SizeTransitionWithIntrinsicSize(
sizeFactor: widget.deleteAnimationController,
axis: Axis.vertical,
child: IgnorePointerWidget(
child: widget.child,
),
);
} else {
return SizeTransitionWithIntrinsicSize(
sizeFactor: widget.insertAnimationController,
axis: Axis.vertical,
child: IgnorePointerWidget(
useIntrinsicSize: true,
child: widget.child,
),
);
}
}
final animationController = simulateDragging void _onInsertedAnimationStatusChanged(AnimationStatus status) {
? widget.deleteAnimationController if (status != AnimationStatus.completed) return;
: widget.insertAnimationController; WidgetsBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
return SizeTransitionWithIntrinsicSize( setState(() {
sizeFactor: animationController, simulateDragging = true;
axis: Axis.vertical, widget.deleteAnimationController.reverse(from: 1.0);
child: child, widget.onWillAccept(widget.eventData.dragTargetData as T);
); widget.onDragStarted(
widget.child,
widget.eventData.index,
widget.eventData.feedbackSize,
);
});
});
} }
} }

View File

@ -27,8 +27,10 @@ mixin ReorderFlexMinxi {
child: FadeTransition(opacity: animationController, child: child), child: FadeTransition(opacity: animationController, child: child),
); );
BoxConstraints contentSizeConstraints = BoxConstraints.loose(draggingFeedbackSize); BoxConstraints contentSizeConstraints =
return ConstrainedBox(constraints: contentSizeConstraints, child: transition); BoxConstraints.loose(draggingFeedbackSize);
return ConstrainedBox(
constraints: contentSizeConstraints, child: transition);
} }
} }
@ -56,13 +58,16 @@ mixin ReorderFlexMinxi {
child: FadeTransition(opacity: animationController, child: child), child: FadeTransition(opacity: animationController, child: child),
); );
BoxConstraints contentSizeConstraints = BoxConstraints.loose(draggingFeedbackSize); BoxConstraints contentSizeConstraints =
return ConstrainedBox(constraints: contentSizeConstraints, child: transition); BoxConstraints.loose(draggingFeedbackSize);
return ConstrainedBox(
constraints: contentSizeConstraints, child: transition);
} }
} }
} }
Animation<double> withCurve(AnimationController animationController, Cubic curve) { Animation<double> withCurve(
AnimationController animationController, Cubic curve) {
return CurvedAnimation( return CurvedAnimation(
parent: animationController, parent: animationController,
curve: curve, curve: curve,

View File

@ -1,12 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../flowy_board.dart';
import '../../utils/log.dart'; import '../../utils/log.dart';
import '../board_column/board_column_data.dart';
import '../flex/drag_state.dart'; import '../flex/drag_state.dart';
import '../flex/drag_target.dart'; import '../flex/drag_target.dart';
import '../flex/drag_target_inteceptor.dart'; import '../flex/drag_target_inteceptor.dart';
import 'phantom_state.dart'; import 'phantom_state.dart';
@protected
abstract class BoardPhantomControllerDelegate { abstract class BoardPhantomControllerDelegate {
BoardColumnDataController? controller(String columnId); BoardColumnDataController? controller(String columnId);
@ -35,7 +34,6 @@ abstract class BoardPhantomControllerDelegate {
); );
} }
@protected
class BoardPhantomController extends OverlapDragTargetDelegate class BoardPhantomController extends OverlapDragTargetDelegate
with CrossReorderFlexDragTargetDelegate { with CrossReorderFlexDragTargetDelegate {
PhantomRecord? phantomRecord; PhantomRecord? phantomRecord;
@ -95,8 +93,6 @@ class BoardPhantomController extends OverlapDragTargetDelegate
/// Remove the phantom in the column if it contains phantom /// Remove the phantom in the column if it contains phantom
void _removePhantom(String columnId) { void _removePhantom(String columnId) {
// columnsState.notifyDidRemovePhantom(columnId);
// columnsState.removeColumnListener(columnId);
if (delegate.removePhantom(columnId)) { if (delegate.removePhantom(columnId)) {
columnsState.notifyDidRemovePhantom(columnId); columnsState.notifyDidRemovePhantom(columnId);
columnsState.removeColumnListener(columnId); columnsState.removeColumnListener(columnId);
@ -217,7 +213,6 @@ class BoardPhantomController extends OverlapDragTargetDelegate
/// [toColumnId] the column that the phantom moves into /// [toColumnId] the column that the phantom moves into
/// [toColumnIndex] the index of the phantom moves into the column /// [toColumnIndex] the index of the phantom moves into the column
/// ///
@protected
class PhantomRecord { class PhantomRecord {
final String fromColumnId; final String fromColumnId;
int fromColumnIndex; int fromColumnIndex;
@ -313,7 +308,6 @@ class PassthroughPhantomContext extends FakeDragTargetEventTrigger
} }
} }
@protected
class PassthroughPhantomWidget extends PhantomWidget { class PassthroughPhantomWidget extends PhantomWidget {
final PassthroughPhantomContext passthroughPhantomContext; final PassthroughPhantomContext passthroughPhantomContext;
@ -328,7 +322,6 @@ class PassthroughPhantomWidget extends PhantomWidget {
); );
} }
@protected
class PhantomDraggableBuilder extends ReorderFlexDraggableTargetBuilder { class PhantomDraggableBuilder extends ReorderFlexDraggableTargetBuilder {
PhantomDraggableBuilder(); PhantomDraggableBuilder();
@override @override