chore: replace popover with appflowy popover

This commit is contained in:
appflowy 2022-09-15 21:51:18 +08:00
parent 499ee29c3d
commit 520d5c2cb0
3 changed files with 40 additions and 30 deletions

View File

@ -1,6 +1,5 @@
import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart';
import 'package:app_flowy/plugins/grid/application/cell/url_cell_editor_bloc.dart'; import 'package:app_flowy/plugins/grid/application/cell/url_cell_editor_bloc.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:async'; import 'dart:async';
@ -79,9 +78,7 @@ class URLEditorPopover extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return OverlayContainer( return SizedBox(
constraints: BoxConstraints.loose(const Size(300, 160)),
child: SizedBox(
width: 200, width: 200,
child: Padding( child: Padding(
padding: const EdgeInsets.all(6), padding: const EdgeInsets.all(6),
@ -89,7 +86,6 @@ class URLEditorPopover extends StatelessWidget {
cellController: cellController, cellController: cellController,
), ),
), ),
),
); );
} }
} }

View File

@ -6,6 +6,7 @@ import 'package:appflowy_popover/popover.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra/theme.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
@ -129,8 +130,9 @@ class _GridURLCellState extends GridCellState<GridURLCell> {
), ),
); );
return Popover( return AppFlowyStylePopover(
controller: _popoverController, controller: _popoverController,
constraints: BoxConstraints.loose(const Size(300, 160)),
direction: PopoverDirection.bottomWithLeftAligned, direction: PopoverDirection.bottomWithLeftAligned,
offset: const Offset(0, 20), offset: const Offset(0, 20),
child: SizedBox.expand( child: SizedBox.expand(
@ -214,7 +216,8 @@ class _EditURLAccessoryState extends State<_EditURLAccessory>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = context.watch<AppTheme>(); final theme = context.watch<AppTheme>();
return Popover( return AppFlowyStylePopover(
constraints: BoxConstraints.loose(const Size(300, 160)),
controller: _popoverController, controller: _popoverController,
direction: PopoverDirection.bottomWithLeftAligned, direction: PopoverDirection.bottomWithLeftAligned,
triggerActions: PopoverTriggerActionFlags.click, triggerActions: PopoverTriggerActionFlags.click,

View File

@ -146,9 +146,7 @@ class _PropertyList extends StatelessWidget {
}); });
}, },
onOpened: (controller) { onOpened: (controller) {
return OverlayContainer( return FieldEditor(
constraints: BoxConstraints.loose(const Size(240, 200)),
child: FieldEditor(
gridId: viewId, gridId: viewId,
typeOptionLoader: NewFieldTypeOptionLoader(gridId: viewId), typeOptionLoader: NewFieldTypeOptionLoader(gridId: viewId),
onDeleted: (fieldId) { onDeleted: (fieldId) {
@ -157,7 +155,6 @@ class _PropertyList extends StatelessWidget {
.read<RowDetailBloc>() .read<RowDetailBloc>()
.add(RowDetailEvent.deleteField(fieldId)); .add(RowDetailEvent.deleteField(fieldId));
}, },
),
); );
}, },
), ),
@ -168,28 +165,41 @@ class _PropertyList extends StatelessWidget {
} }
} }
class _CreateFieldButton extends StatelessWidget { class _CreateFieldButton extends StatefulWidget {
final String viewId; final String viewId;
final Widget Function(PopoverController) onOpened; final Widget Function(PopoverController) onOpened;
final VoidCallback onClosed; final VoidCallback onClosed;
final PopoverController popoverController = PopoverController();
_CreateFieldButton({ const _CreateFieldButton({
required this.viewId, required this.viewId,
required this.onOpened, required this.onOpened,
required this.onClosed, required this.onClosed,
Key? key, Key? key,
}) : super(key: key); }) : super(key: key);
@override
State<_CreateFieldButton> createState() => _CreateFieldButtonState();
}
class _CreateFieldButtonState extends State<_CreateFieldButton> {
late PopoverController popoverController;
@override
void initState() {
popoverController = PopoverController();
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = context.read<AppTheme>(); final theme = context.read<AppTheme>();
return Popover( return AppFlowyStylePopover(
constraints: BoxConstraints.loose(const Size(240, 200)),
controller: popoverController, controller: popoverController,
triggerActions: PopoverTriggerActionFlags.click, triggerActions: PopoverTriggerActionFlags.click,
direction: PopoverDirection.topWithLeftAligned, direction: PopoverDirection.topWithLeftAligned,
onClose: onClosed, onClose: widget.onClosed,
child: Container( child: Container(
height: 40, height: 40,
decoration: _makeBoxDecoration(context), decoration: _makeBoxDecoration(context),
@ -203,7 +213,8 @@ class _CreateFieldButton extends StatelessWidget {
leftIcon: svgWidget("home/add"), leftIcon: svgWidget("home/add"),
), ),
), ),
popupBuilder: (BuildContext context) => onOpened(popoverController), popupBuilder: (BuildContext context) =>
widget.onOpened(popoverController),
); );
} }