mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: open a row as a full page (#5111)
* feat: open a row as a full page * chore: don't set latest open view * chore: fix calendar open * chore: disable in relation * chore: code cleanup * chore: fix merge conflicts
This commit is contained in:
@ -29,6 +29,7 @@ class RelatedRowDetailPage extends StatelessWidget {
|
||||
return RowDetailPage(
|
||||
databaseController: databaseController,
|
||||
rowController: rowController,
|
||||
allowOpenAsFullPage: false,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
@ -4,11 +4,17 @@ import 'package:appflowy/plugins/database/application/cell/cell_controller.dart'
|
||||
import 'package:appflowy/plugins/database/application/field/field_controller.dart';
|
||||
import 'package:appflowy/plugins/database/application/row/row_banner_bloc.dart';
|
||||
import 'package:appflowy/plugins/database/application/row/row_controller.dart';
|
||||
import 'package:appflowy/plugins/database/domain/database_view_service.dart';
|
||||
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_builder.dart';
|
||||
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
|
||||
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
||||
import 'package:appflowy/plugins/database/application/cell/bloc/text_cell_bloc.dart';
|
||||
import 'package:appflowy/plugins/database/widgets/row/row_action.dart';
|
||||
import 'package:appflowy/plugins/database_document/database_document_plugin.dart';
|
||||
import 'package:appflowy/startup/plugin/plugin.dart';
|
||||
import 'package:appflowy/startup/startup.dart';
|
||||
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
|
||||
import 'package:appflowy/workspace/application/view/view_bloc.dart';
|
||||
import 'package:appflowy/workspace/presentation/settings/widgets/emoji_picker/emoji_picker.dart';
|
||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
@ -25,11 +31,13 @@ class RowBanner extends StatefulWidget {
|
||||
required this.fieldController,
|
||||
required this.rowController,
|
||||
required this.cellBuilder,
|
||||
this.allowOpenAsFullPage = true,
|
||||
});
|
||||
|
||||
final FieldController fieldController;
|
||||
final RowController rowController;
|
||||
final EditableCellBuilder cellBuilder;
|
||||
final bool allowOpenAsFullPage;
|
||||
|
||||
@override
|
||||
State<RowBanner> createState() => _RowBannerState();
|
||||
@ -84,6 +92,42 @@ class _RowBannerState extends State<RowBanner> {
|
||||
right: 12,
|
||||
child: RowActionButton(rowController: widget.rowController),
|
||||
),
|
||||
if (widget.allowOpenAsFullPage)
|
||||
Positioned(
|
||||
top: 12,
|
||||
left: 12,
|
||||
child: FlowyIconButton(
|
||||
width: 20,
|
||||
height: 20,
|
||||
icon: const FlowySvg(FlowySvgs.full_view_s),
|
||||
onPressed: () async {
|
||||
Navigator.of(context).pop();
|
||||
final viewBloc = context.read<ViewBloc>();
|
||||
final databaseId = await DatabaseViewBackendService(
|
||||
viewId: widget.cellBuilder.databaseController.viewId,
|
||||
)
|
||||
.getDatabaseId()
|
||||
.then((value) => value.fold((s) => s, (f) => null));
|
||||
final documentId = widget.rowController.rowMeta.documentId;
|
||||
if (databaseId != null) {
|
||||
getIt<TabsBloc>().add(
|
||||
TabsEvent.openPlugin(
|
||||
plugin: DatabaseDocumentPlugin(
|
||||
data: DatabaseDocumentContext(
|
||||
view: viewBloc.state.view,
|
||||
databaseId: databaseId,
|
||||
rowId: widget.rowController.rowId,
|
||||
documentId: documentId,
|
||||
),
|
||||
pluginType: PluginType.databaseDocument,
|
||||
),
|
||||
setLatest: false,
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -19,10 +19,12 @@ class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
|
||||
super.key,
|
||||
required this.rowController,
|
||||
required this.databaseController,
|
||||
this.allowOpenAsFullPage = true,
|
||||
});
|
||||
|
||||
final RowController rowController;
|
||||
final DatabaseController databaseController;
|
||||
final bool allowOpenAsFullPage;
|
||||
|
||||
@override
|
||||
State<RowDetailPage> createState() => _RowDetailPageState();
|
||||
@ -60,6 +62,7 @@ class _RowDetailPageState extends State<RowDetailPage> {
|
||||
fieldController: widget.databaseController.fieldController,
|
||||
rowController: widget.rowController,
|
||||
cellBuilder: cellBuilder,
|
||||
allowOpenAsFullPage: widget.allowOpenAsFullPage,
|
||||
),
|
||||
const VSpace(16),
|
||||
Padding(
|
||||
|
@ -69,7 +69,7 @@ class _RowEditorState extends State<RowEditor> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
documentBloc = DocumentBloc(view: widget.viewPB)
|
||||
documentBloc = DocumentBloc(documentId: widget.viewPB.id)
|
||||
..add(const DocumentEvent.initial());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user