chore: dart fmt

This commit is contained in:
appflowy 2022-08-06 11:21:25 +08:00
parent 8ca1cc0a21
commit 151e735d27
4 changed files with 68 additions and 33 deletions

View File

@ -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

@ -8,6 +8,7 @@ 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
class BoardDataController extends ChangeNotifier class BoardDataController extends ChangeNotifier
with EquatableMixin, BoardPhantomControllerDelegate, ReoderFlextDataSource { with EquatableMixin, BoardPhantomControllerDelegate, ReoderFlextDataSource {
final List<BoardColumnData> _columnDatas = []; final List<BoardColumnData> _columnDatas = [];

View File

@ -14,7 +14,8 @@ typedef OnDragEnded = void Function();
typedef OnReorder = void Function(int fromIndex, int toIndex); typedef OnReorder = void Function(int fromIndex, int toIndex);
typedef OnDeleted = void Function(int deletedIndex); typedef OnDeleted = void Function(int deletedIndex);
typedef OnInserted = void Function(int insertedIndex); typedef OnInserted = void Function(int insertedIndex);
typedef OnReveivePassedInPhantom = void Function(FlexDragTargetData dragTargetData, int phantomIndex); typedef OnReveivePassedInPhantom = void Function(
FlexDragTargetData dragTargetData, int phantomIndex);
abstract class ReoderFlextDataSource { abstract class ReoderFlextDataSource {
/// [identifier] represents the id the [ReorderFlex]. It must be unique. /// [identifier] represents the id the [ReorderFlex]. It must be unique.
@ -90,7 +91,8 @@ class ReorderFlex extends StatefulWidget {
String get reorderFlexId => dataSource.identifier; String get reorderFlexId => dataSource.identifier;
} }
class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerProviderStateMixin<ReorderFlex> { class ReorderFlexState extends State<ReorderFlex>
with ReorderFlexMinxi, TickerProviderStateMixin<ReorderFlex> {
/// Controls scrolls and measures scroll progress. /// Controls scrolls and measures scroll progress.
late ScrollController _scrollController; late ScrollController _scrollController;
@ -130,7 +132,9 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
_attachedScrollPosition = null; _attachedScrollPosition = null;
} }
_scrollController = widget.scrollController ?? PrimaryScrollController.of(context) ?? ScrollController(); _scrollController = widget.scrollController ??
PrimaryScrollController.of(context) ??
ScrollController();
if (_scrollController.hasClients) { if (_scrollController.hasClients) {
_attachedScrollPosition = Scrollable.of(context)?.position; _attachedScrollPosition = Scrollable.of(context)?.position;
@ -252,7 +256,9 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
]); ]);
} else if (childIndex == dragPhantomIndex) { } else if (childIndex == dragPhantomIndex) {
return _buildDraggingContainer( return _buildDraggingContainer(
children: shiftedIndex <= childIndex ? [dragTarget, disappearSpace] : [disappearSpace, dragTarget]); children: shiftedIndex <= childIndex
? [dragTarget, disappearSpace]
: [disappearSpace, dragTarget]);
} }
} }
@ -273,7 +279,9 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
]); ]);
} else if (childIndex == dragPhantomIndex) { } else if (childIndex == dragPhantomIndex) {
return _buildDraggingContainer( return _buildDraggingContainer(
children: shiftedIndex >= childIndex ? [disappearSpace, dragTarget] : [dragTarget, disappearSpace]); children: shiftedIndex >= childIndex
? [disappearSpace, dragTarget]
: [dragTarget, disappearSpace]);
} }
} }
@ -299,7 +307,8 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
Widget child, Widget child,
int dragTargetIndex, int dragTargetIndex,
) { ) {
final ReoderFlexItem reorderFlexItem = widget.dataSource.items[dragTargetIndex]; final ReoderFlexItem reorderFlexItem =
widget.dataSource.items[dragTargetIndex];
return ReorderDragTarget<FlexDragTargetData>( return ReorderDragTarget<FlexDragTargetData>(
dragTargetData: FlexDragTargetData( dragTargetData: FlexDragTargetData(
draggingIndex: dragTargetIndex, draggingIndex: dragTargetIndex,
@ -309,12 +318,14 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
dragTargetId: reorderFlexItem.id, dragTargetId: reorderFlexItem.id,
), ),
onDragStarted: (draggingWidget, draggingIndex, size) { onDragStarted: (draggingWidget, draggingIndex, size) {
Log.debug("[DragTarget] Column${widget.dataSource.identifier} start dragging"); Log.debug(
"[DragTarget] Column${widget.dataSource.identifier} start dragging item at $draggingIndex");
_startDragging(draggingWidget, draggingIndex, size); _startDragging(draggingWidget, draggingIndex, size);
widget.onDragStarted?.call(draggingIndex); widget.onDragStarted?.call(draggingIndex);
}, },
onDragEnded: (dragTargetData) { onDragEnded: (dragTargetData) {
Log.debug("[DragTarget]: Column${widget.dataSource.identifier} end dragging"); Log.debug(
"[DragTarget]: Column${widget.dataSource.identifier} end dragging");
setState(() { setState(() {
_onReordered( _onReordered(
@ -411,7 +422,8 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
Log.trace( Log.trace(
'[$ReorderDragTarget] ${widget.dataSource.identifier} on will accept, dragIndex:$dragIndex, dragTargetIndex:$dragTargetIndex, count: ${widget.dataSource.items.length}'); '[$ReorderDragTarget] ${widget.dataSource.identifier} on will accept, dragIndex:$dragIndex, dragTargetIndex:$dragTargetIndex, count: ${widget.dataSource.items.length}');
bool willAccept = dragState.dragStartIndex == dragIndex && dragIndex != dragTargetIndex; bool willAccept =
dragState.dragStartIndex == dragIndex && dragIndex != dragTargetIndex;
setState(() { setState(() {
if (willAccept) { if (willAccept) {
int shiftedIndex = dragState.calculateShiftedIndex(dragTargetIndex); int shiftedIndex = dragState.calculateShiftedIndex(dragTargetIndex);
@ -438,7 +450,8 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
} }
Widget _wrapScrollView({required Widget child}) { Widget _wrapScrollView({required Widget child}) {
if (widget.scrollController != null && PrimaryScrollController.of(context) == null) { if (widget.scrollController != null &&
PrimaryScrollController.of(context) == null) {
return child; return child;
} else { } else {
return SingleChildScrollView( return SingleChildScrollView(
@ -492,12 +505,14 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
void _scrollTo(BuildContext context) { void _scrollTo(BuildContext context) {
if (_scrolling) return; if (_scrolling) return;
final RenderObject contextObject = context.findRenderObject()!; final RenderObject contextObject = context.findRenderObject()!;
final RenderAbstractViewport viewport = RenderAbstractViewport.of(contextObject)!; final RenderAbstractViewport viewport =
RenderAbstractViewport.of(contextObject)!;
// If and only if the current scroll offset falls in-between the offsets // If and only if the current scroll offset falls in-between the offsets
// necessary to reveal the selected context at the top or bottom of the // necessary to reveal the selected context at the top or bottom of the
// screen, then it is already on-screen. // screen, then it is already on-screen.
final double margin = final double margin = widget.direction == Axis.horizontal
widget.direction == Axis.horizontal ? dragState.dropAreaSize.width : dragState.dropAreaSize.height; ? dragState.dropAreaSize.width
: dragState.dropAreaSize.height;
if (_scrollController.hasClients) { if (_scrollController.hasClients) {
final double scrollOffset = _scrollController.offset; final double scrollOffset = _scrollController.offset;
final double topOffset = max( final double topOffset = max(
@ -508,7 +523,8 @@ class ReorderFlexState extends State<ReorderFlex> with ReorderFlexMinxi, TickerP
_scrollController.position.maxScrollExtent, _scrollController.position.maxScrollExtent,
viewport.getOffsetToReveal(contextObject, 1.0).offset + margin, viewport.getOffsetToReveal(contextObject, 1.0).offset + margin,
); );
final bool onScreen = scrollOffset <= topOffset && scrollOffset >= bottomOffset; final bool onScreen =
scrollOffset <= topOffset && scrollOffset >= bottomOffset;
// If the context is off screen, then we request a scroll to make it visible. // If the context is off screen, then we request a scroll to make it visible.
if (!onScreen) { if (!onScreen) {

View File

@ -6,60 +6,78 @@ mixin ReorderFlexMinxi {
@protected @protected
Widget makeAppearingWidget( Widget makeAppearingWidget(
Widget child, Widget child,
AnimationController entranceController, AnimationController animationController,
Size? draggingFeedbackSize, Size? draggingFeedbackSize,
Axis direction, Axis direction,
) { ) {
final sizeFactor = animationController.withLinearCurve();
if (null == draggingFeedbackSize) { if (null == draggingFeedbackSize) {
return SizeTransitionWithIntrinsicSize( return SizeTransitionWithIntrinsicSize(
sizeFactor: entranceController, sizeFactor: sizeFactor,
axis: direction, axis: direction,
child: FadeTransition( child: FadeTransition(
opacity: entranceController, opacity: sizeFactor,
child: child, child: child,
), ),
); );
} else { } else {
var transition = SizeTransition( var transition = SizeTransition(
sizeFactor: entranceController, sizeFactor: sizeFactor,
axis: direction, axis: direction,
child: FadeTransition(opacity: entranceController, child: child), child: FadeTransition(opacity: animationController, child: child),
); );
BoxConstraints contentSizeConstraints = BoxConstraints contentSizeConstraints = BoxConstraints.loose(draggingFeedbackSize);
BoxConstraints.loose(draggingFeedbackSize); return ConstrainedBox(constraints: contentSizeConstraints, child: transition);
return ConstrainedBox(
constraints: contentSizeConstraints, child: transition);
} }
} }
@protected @protected
Widget makeDisappearingWidget( Widget makeDisappearingWidget(
Widget child, Widget child,
AnimationController phantomController, AnimationController animationController,
Size? draggingFeedbackSize, Size? draggingFeedbackSize,
Axis direction, Axis direction,
) { ) {
final sizeFactor = animationController.withLinearCurve();
if (null == draggingFeedbackSize) { if (null == draggingFeedbackSize) {
return SizeTransitionWithIntrinsicSize( return SizeTransitionWithIntrinsicSize(
sizeFactor: phantomController, sizeFactor: sizeFactor,
axis: direction, axis: direction,
child: FadeTransition( child: FadeTransition(
opacity: phantomController, opacity: sizeFactor,
child: child, child: child,
), ),
); );
} else { } else {
var transition = SizeTransition( var transition = SizeTransition(
sizeFactor: phantomController, sizeFactor: sizeFactor,
axis: direction, axis: direction,
child: FadeTransition(opacity: phantomController, child: child), child: FadeTransition(opacity: animationController, child: child),
); );
BoxConstraints contentSizeConstraints = BoxConstraints contentSizeConstraints = BoxConstraints.loose(draggingFeedbackSize);
BoxConstraints.loose(draggingFeedbackSize); return ConstrainedBox(constraints: contentSizeConstraints, child: transition);
return ConstrainedBox(
constraints: contentSizeConstraints, child: transition);
} }
} }
} }
Animation<double> withCurve(AnimationController animationController, Cubic curve) {
return CurvedAnimation(
parent: animationController,
curve: curve,
);
}
extension CurveAnimationController on AnimationController {
Animation<double> withLinearCurve() {
return withCurve(Curves.linear);
}
Animation<double> withCurve(Curve curve) {
return CurvedAnimation(
parent: this,
curve: curve,
);
}
}