diff --git a/lib/chess/chess_square_inner_draggable.dart b/lib/chess/chess_square_inner_draggable.dart index d01e00a..58dcf73 100644 --- a/lib/chess/chess_square_inner_draggable.dart +++ b/lib/chess/chess_square_inner_draggable.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mchess/chess/chess_square.dart'; import 'package:mchess/chess_bloc/chess_bloc.dart'; +import 'package:mchess/chess_bloc/tap_bloc.dart'; import 'package:mchess/utils/chess_utils.dart'; class ChessSquareInnerDraggable extends StatelessWidget { @@ -48,7 +49,9 @@ class ChessSquareInnerDraggable extends StatelessWidget { dragAnchorStrategy: pointerDragAnchorStrategy, child: containedPiece ?? Container(), onDragCompleted: () {}, - onDragStarted: () {}, + onDragStarted: () { + TapBloc().add(CancelTapEvent()); + }, ), ); } diff --git a/lib/chess_bloc/tap_bloc.dart b/lib/chess_bloc/tap_bloc.dart index f89fc66..7e9e4cd 100644 --- a/lib/chess_bloc/tap_bloc.dart +++ b/lib/chess_bloc/tap_bloc.dart @@ -19,6 +19,7 @@ class TapBloc extends Bloc { TapBloc._internal() : super(TapState.init()) { on(handleTap); + on(cancelTap); } void handleTap(SquareTappedEvent event, Emitter emit) { @@ -71,6 +72,10 @@ class TapBloc extends Bloc { pieceOnFirstTappedSquare: piece, secondSquareTapped: secondTappedSquare)); } + + void cancelTap(CancelTapEvent event, Emitter emit) { + emit(TapState.init()); + } } abstract class TapEvent {} @@ -82,6 +87,8 @@ class SquareTappedEvent extends TapEvent { SquareTappedEvent({required this.tapped, required this.pieceOnSquare}); } +class CancelTapEvent extends TapEvent {} + class TapState { ChessCoordinate? firstSquareTapped; ChessPiece? pieceOnFirstTappedSquare;