fix(flutter_desktop): fix calendar event bugs (#6446)

* fix: row controller being disposed too early in calendar

* fix: empty accessories in calendar event card
This commit is contained in:
Richard Shiue 2024-10-02 09:17:02 +08:00 committed by GitHub
parent 19361e2c68
commit 092aefdd71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 13 deletions

View File

@ -1,3 +1,5 @@
import 'package:appflowy/plugins/database/application/row/row_controller.dart';
import 'package:appflowy/plugins/database/widgets/row/row_detail.dart';
import 'package:flutter/material.dart';
import 'package:appflowy/mobile/presentation/database/card/card_detail/mobile_card_detail_screen.dart';
@ -168,6 +170,22 @@ class _EventCardState extends State<EventCard> {
databaseController: widget.databaseController,
rowMeta: widget.event.event.rowMeta,
layoutSettings: settings,
onExpand: () {
final rowController = RowController(
rowMeta: widget.event.event.rowMeta,
viewId: widget.databaseController.viewId,
rowCache: widget.databaseController.rowCache,
);
FlowyOverlay.show(
context: context,
builder: (_) => RowDetailPage(
databaseController: widget.databaseController,
rowController: rowController,
userProfile: context.read<CalendarBloc>().userProfile,
),
);
},
),
);
},

View File

@ -12,8 +12,6 @@ import 'package:appflowy/plugins/database/widgets/cell/editable_cell_builder.dar
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
import 'package:appflowy/plugins/database/widgets/row/accessory/cell_accessory.dart';
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
import 'package:appflowy/plugins/database/widgets/row/row_detail.dart';
import 'package:appflowy/workspace/application/view/view_bloc.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:collection/collection.dart';
@ -28,6 +26,7 @@ class CalendarEventEditor extends StatelessWidget {
required RowMetaPB rowMeta,
required this.layoutSettings,
required this.databaseController,
required this.onExpand,
}) : rowController = RowController(
rowMeta: rowMeta,
viewId: databaseController.viewId,
@ -40,6 +39,7 @@ class CalendarEventEditor extends StatelessWidget {
final DatabaseController databaseController;
final RowController rowController;
final EditableCellBuilder cellBuilder;
final VoidCallback onExpand;
@override
Widget build(BuildContext context) {
@ -55,6 +55,7 @@ class CalendarEventEditor extends StatelessWidget {
EventEditorControls(
rowController: rowController,
databaseController: databaseController,
onExpand: onExpand,
),
Flexible(
child: EventPropertyList(
@ -74,10 +75,12 @@ class EventEditorControls extends StatelessWidget {
super.key,
required this.rowController,
required this.databaseController,
required this.onExpand,
});
final RowController rowController;
final DatabaseController databaseController;
final VoidCallback onExpand;
@override
Widget build(BuildContext context) {
@ -122,17 +125,7 @@ class EventEditorControls extends StatelessWidget {
iconColorOnHover: Theme.of(context).colorScheme.onSecondary,
onPressed: () {
PopoverContainer.of(context).close();
FlowyOverlay.show(
context: context,
builder: (_) => BlocProvider.value(
value: context.read<ViewBloc>(),
child: RowDetailPage(
databaseController: databaseController,
rowController: rowController,
userProfile: context.read<CalendarBloc>().userProfile,
),
),
);
onExpand.call();
},
),
],

View File

@ -24,6 +24,10 @@ class CardAccessoryContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (accessories.isEmpty) {
return const SizedBox.shrink();
}
final children = accessories.map<Widget>((accessory) {
return GestureDetector(
behavior: HitTestBehavior.opaque,