mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-09-23 15:38:07 +00:00
fix: crash on delete button press caused by GoRouter (#6629)
* fix: crash on delete button press caused by GoRouter * fix: gorouter pop
This commit is contained in:
parent
a42b6e02ab
commit
eafd0b3353
@ -9,7 +9,6 @@ import 'package:appflowy/plugins/shared/share/constants.dart';
|
|||||||
import 'package:appflowy/plugins/shared/share/publish_name_generator.dart';
|
import 'package:appflowy/plugins/shared/share/publish_name_generator.dart';
|
||||||
import 'package:appflowy/plugins/shared/share/share_bloc.dart';
|
import 'package:appflowy/plugins/shared/share/share_bloc.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy/util/navigator_context_exntesion.dart';
|
|
||||||
import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart';
|
import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart';
|
||||||
import 'package:appflowy/workspace/application/view/prelude.dart';
|
import 'package:appflowy/workspace/application/view/prelude.dart';
|
||||||
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
|
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
|
||||||
@ -24,69 +23,75 @@ class MobileViewPageMoreBottomSheet extends StatelessWidget {
|
|||||||
const MobileViewPageMoreBottomSheet({super.key, required this.view});
|
const MobileViewPageMoreBottomSheet({super.key, required this.view});
|
||||||
|
|
||||||
final ViewPB view;
|
final ViewPB view;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ViewPageBottomSheet(
|
return BlocListener<ViewBloc, ViewState>(
|
||||||
view: view,
|
listener: (context, state) {
|
||||||
onAction: (action) async {
|
if (state.successOrFailure.isSuccess && state.isDeleted) {
|
||||||
switch (action) {
|
context.go('/home');
|
||||||
case MobileViewBottomSheetBodyAction.duplicate:
|
|
||||||
context.read<ViewBloc>().add(const ViewEvent.duplicate());
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.delete:
|
|
||||||
context.read<ViewBloc>().add(const ViewEvent.delete());
|
|
||||||
context.popToHome();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.addToFavorites:
|
|
||||||
case MobileViewBottomSheetBodyAction.removeFromFavorites:
|
|
||||||
context.read<FavoriteBloc>().add(FavoriteEvent.toggle(view));
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.undo:
|
|
||||||
EditorNotification.undo().post();
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.redo:
|
|
||||||
EditorNotification.redo().post();
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.helpCenter:
|
|
||||||
// unimplemented
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.publish:
|
|
||||||
await _publish(context);
|
|
||||||
if (context.mounted) {
|
|
||||||
context.pop();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.unpublish:
|
|
||||||
_unpublish(context);
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.copyPublishLink:
|
|
||||||
_copyPublishLink(context);
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.visitSite:
|
|
||||||
_visitPublishedSite(context);
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.copyShareLink:
|
|
||||||
_copyShareLink(context);
|
|
||||||
context.pop();
|
|
||||||
break;
|
|
||||||
case MobileViewBottomSheetBodyAction.rename:
|
|
||||||
// no need to implement, rename is handled by the onRename callback.
|
|
||||||
throw UnimplementedError();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onRename: (name) {
|
child: ViewPageBottomSheet(
|
||||||
_onRename(context, name);
|
view: view,
|
||||||
context.pop();
|
onAction: (action) async {
|
||||||
},
|
switch (action) {
|
||||||
|
case MobileViewBottomSheetBodyAction.duplicate:
|
||||||
|
context.read<ViewBloc>().add(const ViewEvent.duplicate());
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.delete:
|
||||||
|
context.read<ViewBloc>().add(const ViewEvent.delete());
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.addToFavorites:
|
||||||
|
case MobileViewBottomSheetBodyAction.removeFromFavorites:
|
||||||
|
context.read<FavoriteBloc>().add(FavoriteEvent.toggle(view));
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.undo:
|
||||||
|
EditorNotification.undo().post();
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.redo:
|
||||||
|
EditorNotification.redo().post();
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.helpCenter:
|
||||||
|
// unimplemented
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.publish:
|
||||||
|
await _publish(context);
|
||||||
|
if (context.mounted) {
|
||||||
|
context.pop();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.unpublish:
|
||||||
|
_unpublish(context);
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.copyPublishLink:
|
||||||
|
_copyPublishLink(context);
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.visitSite:
|
||||||
|
_visitPublishedSite(context);
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.copyShareLink:
|
||||||
|
_copyShareLink(context);
|
||||||
|
context.pop();
|
||||||
|
break;
|
||||||
|
case MobileViewBottomSheetBodyAction.rename:
|
||||||
|
// no need to implement, rename is handled by the onRename callback.
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onRename: (name) {
|
||||||
|
_onRename(context, name);
|
||||||
|
context.pop();
|
||||||
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,6 +154,7 @@ class ViewBloc extends Bloc<ViewEvent, ViewState> {
|
|||||||
(l) {
|
(l) {
|
||||||
return state.copyWith(
|
return state.copyWith(
|
||||||
successOrFailure: FlowyResult.success(null),
|
successOrFailure: FlowyResult.success(null),
|
||||||
|
isDeleted: true,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
(error) => state.copyWith(
|
(error) => state.copyWith(
|
||||||
@ -478,6 +479,7 @@ class ViewState with _$ViewState {
|
|||||||
required bool isEditing,
|
required bool isEditing,
|
||||||
required bool isExpanded,
|
required bool isExpanded,
|
||||||
required FlowyResult<void, FlowyError> successOrFailure,
|
required FlowyResult<void, FlowyError> successOrFailure,
|
||||||
|
@Default(false) bool isDeleted,
|
||||||
@Default(true) bool isLoading,
|
@Default(true) bool isLoading,
|
||||||
@Default(null) ViewPB? lastCreatedView,
|
@Default(null) ViewPB? lastCreatedView,
|
||||||
}) = _ViewState;
|
}) = _ViewState;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user