mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: can't find context after popover disappear
This commit is contained in:
@ -93,9 +93,9 @@ class _EditFieldButton extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _FieldOperationList extends StatelessWidget {
|
class _FieldOperationList extends StatelessWidget {
|
||||||
final GridFieldCellContext fieldData;
|
final GridFieldCellContext fieldContext;
|
||||||
final VoidCallback onDismissed;
|
final VoidCallback onDismissed;
|
||||||
const _FieldOperationList(this.fieldData, this.onDismissed, {Key? key})
|
const _FieldOperationList(this.fieldContext, this.onDismissed, {Key? key})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -118,14 +118,14 @@ class _FieldOperationList extends StatelessWidget {
|
|||||||
bool enable = true;
|
bool enable = true;
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case FieldAction.delete:
|
case FieldAction.delete:
|
||||||
enable = !fieldData.field.isPrimary;
|
enable = !fieldContext.field.isPrimary;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FieldActionCell(
|
return FieldActionCell(
|
||||||
fieldId: fieldData.field.id,
|
fieldContext: fieldContext,
|
||||||
action: action,
|
action: action,
|
||||||
onTap: onDismissed,
|
onTap: onDismissed,
|
||||||
enable: enable,
|
enable: enable,
|
||||||
@ -136,13 +136,13 @@ class _FieldOperationList extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class FieldActionCell extends StatelessWidget {
|
class FieldActionCell extends StatelessWidget {
|
||||||
final String fieldId;
|
final GridFieldCellContext fieldContext;
|
||||||
final VoidCallback onTap;
|
final VoidCallback onTap;
|
||||||
final FieldAction action;
|
final FieldAction action;
|
||||||
final bool enable;
|
final bool enable;
|
||||||
|
|
||||||
const FieldActionCell({
|
const FieldActionCell({
|
||||||
required this.fieldId,
|
required this.fieldContext,
|
||||||
required this.action,
|
required this.action,
|
||||||
required this.onTap,
|
required this.onTap,
|
||||||
required this.enable,
|
required this.enable,
|
||||||
@ -161,7 +161,7 @@ class FieldActionCell extends StatelessWidget {
|
|||||||
hoverColor: theme.hover,
|
hoverColor: theme.hover,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (enable) {
|
if (enable) {
|
||||||
action.run(context);
|
action.run(context, fieldContext);
|
||||||
onTap();
|
onTap();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -202,7 +202,7 @@ extension _FieldActionExtension on FieldAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void run(BuildContext context) {
|
void run(BuildContext context, GridFieldCellContext fieldContext) {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case FieldAction.hide:
|
case FieldAction.hide:
|
||||||
context
|
context
|
||||||
@ -210,18 +210,24 @@ extension _FieldActionExtension on FieldAction {
|
|||||||
.add(const FieldActionSheetEvent.hideField());
|
.add(const FieldActionSheetEvent.hideField());
|
||||||
break;
|
break;
|
||||||
case FieldAction.duplicate:
|
case FieldAction.duplicate:
|
||||||
context
|
PopoverContainer.of(context).close();
|
||||||
.read<FieldActionSheetBloc>()
|
|
||||||
.add(const FieldActionSheetEvent.duplicateField());
|
FieldService(
|
||||||
|
gridId: fieldContext.gridId,
|
||||||
|
fieldId: fieldContext.field.id,
|
||||||
|
).duplicateField();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case FieldAction.delete:
|
case FieldAction.delete:
|
||||||
PopoverContainer.of(context).close();
|
PopoverContainer.of(context).close();
|
||||||
|
|
||||||
NavigatorAlertDialog(
|
NavigatorAlertDialog(
|
||||||
title: LocaleKeys.grid_field_deleteFieldPromptMessage.tr(),
|
title: LocaleKeys.grid_field_deleteFieldPromptMessage.tr(),
|
||||||
confirm: () {
|
confirm: () {
|
||||||
context
|
FieldService(
|
||||||
.read<FieldActionSheetBloc>()
|
gridId: fieldContext.gridId,
|
||||||
.add(const FieldActionSheetEvent.deleteField());
|
fieldId: fieldContext.field.id,
|
||||||
|
).deleteField();
|
||||||
},
|
},
|
||||||
).show(context);
|
).show(context);
|
||||||
|
|
||||||
|
@ -136,7 +136,6 @@ class PopoverState extends State<Popover> {
|
|||||||
|
|
||||||
return Stack(children: children);
|
return Stack(children: children);
|
||||||
});
|
});
|
||||||
|
|
||||||
_rootEntry.addEntry(context, this, newEntry, widget.asBarrier);
|
_rootEntry.addEntry(context, this, newEntry, widget.asBarrier);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +242,7 @@ class PopoverContainerState extends State<PopoverContainer> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
close() => widget.onClose();
|
void close() => widget.onClose();
|
||||||
|
|
||||||
closeAll() => widget.onCloseAll();
|
void closeAll() => widget.onCloseAll();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user