refactor: moving grid widgets used by other database view to upper level folder

* refactor: export UIs in flowy_infra_ui

* refactor: move cells to upper level folder

* refactor: move cell blocs
This commit is contained in:
Nathan.fooo 2023-03-09 09:51:04 +08:00 committed by GitHub
parent 7106195d8a
commit d3823eb076
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
81 changed files with 224 additions and 300 deletions

View File

@ -4,7 +4,7 @@ import 'row_cache.dart';
typedef OnRowChanged = void Function(CellByFieldId, RowsChangedReason);
class RowDataController {
class RowController {
final String rowId;
final String viewId;
final List<VoidCallback> _onRowChangedListeners = [];
@ -12,7 +12,7 @@ class RowDataController {
get cellCache => _rowCache.cellCache;
RowDataController({
RowController({
required this.rowId,
required this.viewId,
required RowCache rowCache,

View File

@ -6,8 +6,7 @@ import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/row_detail.dart';
import 'package:appflowy/plugins/database_view/widgets/row/row_detail.dart';
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
@ -22,6 +21,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import '../../widgets/card/cells/card_cell.dart';
import '../../widgets/card/card_cell_builder.dart';
import '../../widgets/row/cell_builder.dart';
import '../application/board_bloc.dart';
import '../../widgets/card/card.dart';
import 'toolbar/board_toolbar.dart';
@ -312,7 +312,7 @@ class _BoardContentState extends State<BoardContent> {
rowPB: rowPB,
);
final dataController = RowDataController(
final dataController = RowController(
rowId: rowInfo.rowPB.id,
viewId: rowInfo.viewId,
rowCache: rowCache,

View File

@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'board_setting.dart';

View File

@ -1,7 +1,6 @@
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
import 'package:appflowy/plugins/database_view/calendar/application/calendar_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
import 'package:appflowy/plugins/database_view/widgets/card/card_cell_builder.dart';
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
import 'package:calendar_view/calendar_view.dart';
@ -10,15 +9,14 @@ import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:provider/provider.dart';
import '../../grid/presentation/layout/sizes.dart';
import '../../grid/presentation/widgets/row/row_detail.dart';
import '../../widgets/row/cell_builder.dart';
import '../../widgets/row/row_detail.dart';
import 'layout/sizes.dart';
import 'toolbar/calendar_toolbar.dart';
@ -167,7 +165,7 @@ class _CalendarPageState extends State<CalendarPage> {
return FlowyHover(
child: GestureDetector(
onTap: () {
final dataController = RowDataController(
final dataController = RowController(
rowId: event.cellId.rowId,
viewId: widget.view.id,
rowCache: _calendarBloc.rowCache,

View File

@ -14,11 +14,11 @@ part 'row_bloc.freezed.dart';
class RowBloc extends Bloc<RowEvent, RowState> {
final RowBackendService _rowBackendSvc;
final RowDataController _dataController;
final RowController _dataController;
RowBloc({
required RowInfo rowInfo,
required RowDataController dataController,
required RowController dataController,
}) : _rowBackendSvc = RowBackendService(viewId: rowInfo.viewId),
_dataController = dataController,
super(RowState.initial(rowInfo, dataController.loadData())) {

View File

@ -7,7 +7,7 @@ import '../../../application/row/row_data_controller.dart';
part 'row_detail_bloc.freezed.dart';
class RowDetailBloc extends Bloc<RowDetailEvent, RowDetailState> {
final RowDataController dataController;
final RowController dataController;
RowDetailBloc({
required this.dataController,

View File

@ -1,4 +1,5 @@
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart';
import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pbenum.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
@ -23,11 +24,10 @@ import 'grid_scroll.dart';
import 'layout/layout.dart';
import 'layout/sizes.dart';
import 'widgets/accessory_menu.dart';
import 'widgets/cell/cell_builder.dart';
import 'widgets/row/grid_row.dart';
import 'widgets/row/row.dart';
import 'widgets/footer/grid_footer.dart';
import 'widgets/header/grid_header.dart';
import 'widgets/row/row_detail.dart';
import '../../widgets/row/row_detail.dart';
import 'widgets/shortcuts.dart';
import 'widgets/toolbar/grid_toolbar.dart';
@ -279,7 +279,7 @@ class _GridRowsState extends State<_GridRows> {
final fieldController =
context.read<GridBloc>().databaseController.fieldController;
final dataController = RowDataController(
final dataController = RowController(
rowId: rowInfo.rowPB.id,
viewId: rowInfo.viewId,
rowCache: rowCache,
@ -287,7 +287,7 @@ class _GridRowsState extends State<_GridRows> {
return SizeTransition(
sizeFactor: animation,
child: GridRowWidget(
child: GridRow(
rowInfo: rowInfo,
dataController: dataController,
cellBuilder: GridCellBuilder(cellCache: dataController.cellCache),
@ -312,7 +312,7 @@ class _GridRowsState extends State<_GridRows> {
RowCache rowCache,
GridCellBuilder cellBuilder,
) {
final dataController = RowDataController(
final dataController = RowController(
viewId: rowInfo.viewId,
rowId: rowInfo.rowPB.id,
rowCache: rowCache,

View File

@ -1,7 +0,0 @@
export 'cell_builder.dart';
export 'text_cell.dart';
export 'number_cell.dart';
export 'date_cell/date_cell.dart';
export 'checkbox_cell.dart';
export 'select_option_cell/select_option_cell.dart';
export 'url_cell/url_cell.dart';

View File

@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -4,7 +4,6 @@ import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pbenum.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -8,7 +8,7 @@ import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.d
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../cell/select_option_cell/extension.dart';
import '../../../../../../widgets/row/cells/select_option_cell/extension.dart';
import '../../filter_info.dart';
import 'select_option_loader.dart';

View File

@ -1,8 +1,6 @@
import 'package:appflowy/plugins/database_view/grid/application/filter/select_option_filter_bloc.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pb.dart';
import 'package:flutter/material.dart';

View File

@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -5,7 +5,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:flutter/material.dart';

View File

@ -1,9 +1,6 @@
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:flutter/material.dart';
import '../../layout/sizes.dart';

View File

@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:dartz/dartz.dart' show Either;
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:flutter/material.dart';

View File

@ -9,7 +9,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -6,8 +6,6 @@ import 'package:easy_localization/easy_localization.dart' hide DateFormat;
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -4,8 +4,6 @@ import 'package:appflowy/plugins/database_view/application/field/type_option/typ
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -2,8 +2,6 @@ import 'package:appflowy/plugins/database_view/application/field/type_option/sel
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -11,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import '../../../layout/sizes.dart';
import '../../cell/select_option_cell/extension.dart';
import '../../../../../widgets/row/cells/select_option_cell/extension.dart';
import '../../common/type_option_separator.dart';
import 'select_option_editor.dart';

View File

@ -1,5 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/type_option/edit_select_option_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/extension.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';

View File

@ -12,9 +12,9 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import '../../layout/sizes.dart';
class GridRowActionSheet extends StatelessWidget {
class RowActions extends StatelessWidget {
final RowInfo rowData;
const GridRowActionSheet({required this.rowData, Key? key}) : super(key: key);
const RowActions({required this.rowData, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -24,9 +24,7 @@ class GridRowActionSheet extends StatelessWidget {
builder: (context, state) {
final cells = _RowAction.values
.where((value) => value.enable())
.map(
(action) => _RowActionCell(action: action),
)
.map((action) => _ActionCell(action: action))
.toList();
//
@ -49,9 +47,9 @@ class GridRowActionSheet extends StatelessWidget {
}
}
class _RowActionCell extends StatelessWidget {
class _ActionCell extends StatelessWidget {
final _RowAction action;
const _RowActionCell({required this.action, Key? key}) : super(key: key);
const _ActionCell({required this.action, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {

View File

@ -2,30 +2,29 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_service.dar
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
import 'package:appflowy/plugins/database_view/grid/application/row/row_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:provider/provider.dart';
import '../../../../widgets/row/accessory/cell_accessory.dart';
import '../../layout/sizes.dart';
import '../cell/cell_accessory.dart';
import '../cell/cell_container.dart';
import '../cell/prelude.dart';
import 'row_action_sheet.dart';
import '../../../../widgets/row/cells/cell_container.dart';
import 'action.dart';
import "package:appflowy/generated/locale_keys.g.dart";
import 'package:easy_localization/easy_localization.dart';
class GridRowWidget extends StatefulWidget {
class GridRow extends StatefulWidget {
final RowInfo rowInfo;
final RowDataController dataController;
final RowController dataController;
final GridCellBuilder cellBuilder;
final void Function(BuildContext, GridCellBuilder) openDetailPage;
const GridRowWidget({
const GridRow({
required this.rowInfo,
required this.dataController,
required this.cellBuilder,
@ -34,10 +33,10 @@ class GridRowWidget extends StatefulWidget {
}) : super(key: key);
@override
State<GridRowWidget> createState() => _GridRowWidgetState();
State<GridRow> createState() => _GridRowState();
}
class _GridRowWidgetState extends State<GridRowWidget> {
class _GridRowState extends State<GridRow> {
late RowBloc _rowBloc;
@override
@ -111,8 +110,7 @@ class _RowLeadingState extends State<_RowLeading> {
direction: PopoverDirection.rightWithCenterAligned,
margin: const EdgeInsets.all(6),
popupBuilder: (BuildContext popoverContext) {
return GridRowActionSheet(
rowData: context.read<RowBloc>().state.rowInfo);
return RowActions(rowData: context.read<RowBloc>().state.rowInfo);
},
child: Consumer<RegionStateNotifier>(
builder: (context, state, _) {

View File

@ -9,9 +9,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'dart:math' as math;

View File

@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -6,9 +6,6 @@ import 'package:appflowy/startup/startup.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:styled_widget/styled_widget.dart';

View File

@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:styled_widget/styled_widget.dart';

View File

@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -1,5 +1,5 @@
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/row_action_sheet.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/action.dart';
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
@ -149,7 +149,7 @@ class _CardState<T> extends State<Card<T>> {
case AccessoryType.edit:
throw UnimplementedError();
case AccessoryType.more:
return GridRowActionSheet(
return RowActions(
rowData: context.read<CardBloc>().rowInfo(),
);
}

View File

@ -1,9 +1,9 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/checklist_cell/checklist_progress_bar.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/checklist_cell/checklist_progress_bar.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../grid/application/cell/checklist_cell_bloc.dart';
import '../../row/cells/checklist_cell/checklist_cell_bloc.dart';
import 'card_cell.dart';
class ChecklistCardCell extends CardCell {

View File

@ -1,6 +1,6 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/extension.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';

View File

@ -1,10 +1,10 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:textstyle_extensions/textstyle_extensions.dart';
import '../../row/cell_builder.dart';
import '../bloc/text_card_cell_bloc.dart';
import '../define.dart';
import 'card_cell.dart';

View File

@ -9,7 +9,7 @@ import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:textstyle_extensions/textstyle_extensions.dart';
import 'cell_builder.dart';
import '../cell_builder.dart';
class GridCellAccessoryBuildContext {
final BuildContext anchorContext;

View File

@ -3,16 +3,16 @@ import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import '../../../../application/cell/cell_service.dart';
import 'cell_accessory.dart';
import 'cell_shortcuts.dart';
import 'checkbox_cell.dart';
import 'checklist_cell/checklist_cell.dart';
import 'date_cell/date_cell.dart';
import 'number_cell.dart';
import 'select_option_cell/select_option_cell.dart';
import 'text_cell.dart';
import 'url_cell/url_cell.dart';
import '../../application/cell/cell_service.dart';
import 'accessory/cell_accessory.dart';
import 'accessory/cell_shortcuts.dart';
import 'cells/checkbox_cell/checkbox_cell.dart';
import 'cells/checklist_cell/checklist_cell.dart';
import 'cells/date_cell/date_cell.dart';
import 'cells/number_cell/number_cell.dart';
import 'cells/select_option_cell/select_option_cell.dart';
import 'cells/text_cell/text_cell.dart';
import 'cells/url_cell/url_cell.dart';
class GridCellBuilder {
final CellCache cellCache;

View File

@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:styled_widget/styled_widget.dart';
import '../../layout/sizes.dart';
import '../row/grid_row.dart';
import 'cell_accessory.dart';
import 'cell_builder.dart';
import 'cell_shortcuts.dart';
import '../../../grid/presentation/layout/sizes.dart';
import '../../../grid/presentation/widgets/row/row.dart';
import '../accessory/cell_accessory.dart';
import '../accessory/cell_shortcuts.dart';
import '../cell_builder.dart';
class CellContainer extends StatelessWidget {
final GridCellWidget child;

View File

@ -1,12 +1,12 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../application/cell/checkbox_cell_bloc.dart';
import '../../layout/sizes.dart';
import 'cell_builder.dart';
import 'checkbox_cell_bloc.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../cell_builder.dart';
class GridCheckboxCell extends GridCellWidget {
final CellControllerBuilder cellControllerBuilder;
@ -26,7 +26,8 @@ class _CheckboxCellState extends GridCellState<GridCheckboxCell> {
void initState() {
final cellController =
widget.cellControllerBuilder.build() as CheckboxCellController;
_cellBloc = getIt<CheckboxCellBloc>(param1: cellController)
_cellBloc = CheckboxCellBloc(
service: CellBackendService(), cellController: cellController)
..add(const CheckboxCellEvent.initial());
super.initState();
}

View File

@ -1,12 +1,12 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/checklist_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../cell_builder.dart';
import '../../cell_builder.dart';
import 'checklist_cell_bloc.dart';
import 'checklist_cell_editor.dart';
import 'checklist_progress_bar.dart';

View File

@ -1,11 +1,11 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_service.dart';
import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async';
import 'checklist_cell_editor_bloc.dart';
import 'select_option_service.dart';
part 'checklist_cell_bloc.freezed.dart';
class ChecklistCardCellBloc

View File

@ -2,16 +2,12 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../application/cell/checklist_cell_editor_bloc.dart';
import '../../../layout/sizes.dart';
import '../../header/type_option/select_option_editor.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../../../grid/presentation/widgets/header/type_option/select_option_editor.dart';
import 'checklist_cell_editor_bloc.dart';
import 'checklist_progress_bar.dart';
class GridChecklistCellEditor extends StatefulWidget {

View File

@ -1,12 +1,12 @@
import 'dart:async';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_service.dart';
import 'package:dartz/dartz.dart';
import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'select_option_service.dart';
part 'checklist_cell_editor_bloc.freezed.dart';

View File

@ -1,6 +1,6 @@
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/checklist_cell_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor_bloc.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';

View File

@ -18,16 +18,17 @@ import 'package:protobuf/protobuf.dart';
import 'package:fixnum/fixnum.dart' as $fixnum;
part 'date_cal_bloc.freezed.dart';
class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
class DateCellCalendarBloc
extends Bloc<DateCellCalendarEvent, DateCellCalendarState> {
final DateCellController cellController;
void Function()? _onCellChangedFn;
DateCalBloc({
DateCellCalendarBloc({
required DateTypeOptionPB dateTypeOptionPB,
required DateCellDataPB? cellData,
required this.cellController,
}) : super(DateCalState.initial(dateTypeOptionPB, cellData)) {
on<DateCalEvent>(
}) : super(DateCellCalendarState.initial(dateTypeOptionPB, cellData)) {
on<DateCellCalendarEvent>(
(event, emit) async {
await event.when(
initial: () async => _startListening(),
@ -70,7 +71,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
);
}
Future<void> _updateDateData(Emitter<DateCalState> emit,
Future<void> _updateDateData(Emitter<DateCellCalendarState> emit,
{DateTime? date, String? time}) {
final CalendarData newDateData = state.calData.fold(
() => CalendarData(date: date ?? DateTime.now(), time: time),
@ -91,7 +92,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
}
Future<void> _saveDateData(
Emitter<DateCalState> emit, CalendarData newCalData) async {
Emitter<DateCellCalendarState> emit, CalendarData newCalData) async {
if (state.calData == Some(newCalData)) {
return;
}
@ -99,7 +100,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
updateCalData(
Option<CalendarData> calData, Option<String> timeFormatError) {
if (!isClosed) {
add(DateCalEvent.didUpdateCalData(calData, timeFormatError));
add(DateCellCalendarEvent.didUpdateCalData(calData, timeFormatError));
}
}
@ -148,14 +149,14 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
_onCellChangedFn = cellController.startListening(
onCellChanged: ((cell) {
if (!isClosed) {
add(DateCalEvent.didReceiveCellUpdate(cell));
add(DateCellCalendarEvent.didReceiveCellUpdate(cell));
}
}),
);
}
Future<void>? _updateTypeOption(
Emitter<DateCalState> emit, {
Emitter<DateCellCalendarState> emit, {
DateFormat? dateFormat,
TimeFormat? timeFormat,
bool? includeTime,
@ -191,26 +192,29 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
}
@freezed
class DateCalEvent with _$DateCalEvent {
const factory DateCalEvent.initial() = _Initial;
const factory DateCalEvent.selectDay(DateTime day) = _SelectDay;
const factory DateCalEvent.setCalFormat(CalendarFormat format) =
class DateCellCalendarEvent with _$DateCellCalendarEvent {
const factory DateCellCalendarEvent.initial() = _Initial;
const factory DateCellCalendarEvent.selectDay(DateTime day) = _SelectDay;
const factory DateCellCalendarEvent.setCalFormat(CalendarFormat format) =
_CalendarFormat;
const factory DateCalEvent.setFocusedDay(DateTime day) = _FocusedDay;
const factory DateCalEvent.setTimeFormat(TimeFormat timeFormat) = _TimeFormat;
const factory DateCalEvent.setDateFormat(DateFormat dateFormat) = _DateFormat;
const factory DateCalEvent.setIncludeTime(bool includeTime) = _IncludeTime;
const factory DateCalEvent.setTime(String time) = _Time;
const factory DateCalEvent.didReceiveCellUpdate(DateCellDataPB? data) =
_DidReceiveCellUpdate;
const factory DateCalEvent.didUpdateCalData(
const factory DateCellCalendarEvent.setFocusedDay(DateTime day) = _FocusedDay;
const factory DateCellCalendarEvent.setTimeFormat(TimeFormat timeFormat) =
_TimeFormat;
const factory DateCellCalendarEvent.setDateFormat(DateFormat dateFormat) =
_DateFormat;
const factory DateCellCalendarEvent.setIncludeTime(bool includeTime) =
_IncludeTime;
const factory DateCellCalendarEvent.setTime(String time) = _Time;
const factory DateCellCalendarEvent.didReceiveCellUpdate(
DateCellDataPB? data) = _DidReceiveCellUpdate;
const factory DateCellCalendarEvent.didUpdateCalData(
Option<CalendarData> data, Option<String> timeFormatError) =
_DidUpdateCalData;
}
@freezed
class DateCalState with _$DateCalState {
const factory DateCalState({
class DateCellCalendarState with _$DateCellCalendarState {
const factory DateCellCalendarState({
required DateTypeOptionPB dateTypeOptionPB,
required CalendarFormat format,
required DateTime focusedDay,
@ -218,16 +222,16 @@ class DateCalState with _$DateCalState {
required Option<CalendarData> calData,
required String? time,
required String timeHintText,
}) = _DateCalState;
}) = _DateCellCalendarState;
factory DateCalState.initial(
factory DateCellCalendarState.initial(
DateTypeOptionPB dateTypeOptionPB,
DateCellDataPB? cellData,
) {
Option<CalendarData> calData = calDataFromCellData(cellData);
final time =
calData.foldRight("", (dateData, previous) => dateData.time ?? '');
return DateCalState(
return DateCellCalendarState(
dateTypeOptionPB: dateTypeOptionPB,
format: CalendarFormat.month,
focusedDay: DateTime.now(),

View File

@ -1,13 +1,12 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cell_bloc.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import '../../../layout/sizes.dart';
import '../cell_builder.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../cell_builder.dart';
import 'date_cell_bloc.dart';
import 'date_editor.dart';
class DateCellStyle extends GridCellStyle {
@ -50,7 +49,7 @@ class _DateCellState extends GridCellState<GridDateCell> {
_popover = PopoverController();
final cellController =
widget.cellControllerBuilder.build() as DateCellController;
_cellBloc = getIt<DateCellBloc>(param1: cellController)
_cellBloc = DateCellBloc(cellController: cellController)
..add(const DateCellEvent.initial());
super.initState();
}

View File

@ -1,7 +1,6 @@
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cal_bloc.dart';
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle.dart';
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle_style.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
@ -11,9 +10,7 @@ import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/widget/rounded_input_field.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart';
@ -21,9 +18,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:textstyle_extensions/textstyle_extensions.dart';
import '../../../layout/sizes.dart';
import '../../common/type_option_separator.dart';
import '../../header/type_option/date.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../../../grid/presentation/widgets/common/type_option_separator.dart';
import '../../../../grid/presentation/widgets/header/type_option/date.dart';
import 'date_cal_bloc.dart';
final kToday = DateTime.now();
final kFirstDay = DateTime(kToday.year, kToday.month - 3, kToday.day);
@ -92,17 +90,17 @@ class _CellCalendarWidget extends StatefulWidget {
class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
late PopoverMutex popoverMutex;
late DateCalBloc bloc;
late DateCellCalendarBloc bloc;
@override
void initState() {
popoverMutex = PopoverMutex();
bloc = DateCalBloc(
bloc = DateCellCalendarBloc(
dateTypeOptionPB: widget.dateTypeOptionPB,
cellData: widget.cellContext.getCellData(),
cellController: widget.cellContext,
)..add(const DateCalEvent.initial());
)..add(const DateCellCalendarEvent.initial());
super.initState();
}
@ -110,7 +108,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
Widget build(BuildContext context) {
return BlocProvider.value(
value: bloc,
child: BlocBuilder<DateCalBloc, DateCalState>(
child: BlocBuilder<DateCellCalendarBloc, DateCellCalendarState>(
buildWhen: (p, c) => p != c,
builder: (context, state) {
List<Widget> children = [
@ -121,7 +119,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
if (state.dateTypeOptionPB.includeTime) ...[
const VSpace(12.0),
_TimeTextField(
bloc: context.read<DateCalBloc>(),
bloc: context.read<DateCellCalendarBloc>(),
popoverMutex: popoverMutex,
),
],
@ -151,7 +149,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
}
Widget _buildCalendar(BuildContext context) {
return BlocBuilder<DateCalBloc, DateCalState>(
return BlocBuilder<DateCellCalendarBloc, DateCellCalendarState>(
builder: (context, state) {
final textStyle = Theme.of(context).textTheme.bodyMedium!;
final boxDecoration = BoxDecoration(
@ -215,16 +213,18 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
},
onDaySelected: (selectedDay, focusedDay) {
context
.read<DateCalBloc>()
.add(DateCalEvent.selectDay(selectedDay));
.read<DateCellCalendarBloc>()
.add(DateCellCalendarEvent.selectDay(selectedDay));
},
onFormatChanged: (format) {
context.read<DateCalBloc>().add(DateCalEvent.setCalFormat(format));
context
.read<DateCellCalendarBloc>()
.add(DateCellCalendarEvent.setCalFormat(format));
},
onPageChanged: (focusedDay) {
context
.read<DateCalBloc>()
.add(DateCalEvent.setFocusedDay(focusedDay));
.read<DateCellCalendarBloc>()
.add(DateCellCalendarEvent.setFocusedDay(focusedDay));
},
);
},
@ -237,7 +237,7 @@ class _IncludeTimeButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocSelector<DateCalBloc, DateCalState, bool>(
return BlocSelector<DateCellCalendarBloc, DateCellCalendarState, bool>(
selector: (state) => state.dateTypeOptionPB.includeTime,
builder: (context, includeTime) {
return Padding(
@ -258,8 +258,8 @@ class _IncludeTimeButton extends StatelessWidget {
Toggle(
value: includeTime,
onChanged: (value) => context
.read<DateCalBloc>()
.add(DateCalEvent.setIncludeTime(!value)),
.read<DateCellCalendarBloc>()
.add(DateCellCalendarEvent.setIncludeTime(!value)),
style: ToggleStyle.big,
padding: EdgeInsets.zero,
),
@ -274,7 +274,7 @@ class _IncludeTimeButton extends StatelessWidget {
}
class _TimeTextField extends StatefulWidget {
final DateCalBloc bloc;
final DateCellCalendarBloc bloc;
final PopoverMutex popoverMutex;
const _TimeTextField({
@ -298,7 +298,7 @@ class _TimeTextFieldState extends State<_TimeTextField> {
_focusNode.addListener(() {
if (mounted) {
widget.bloc.add(DateCalEvent.setTime(_controller.text));
widget.bloc.add(DateCellCalendarEvent.setTime(_controller.text));
}
});
@ -340,7 +340,7 @@ class _TimeTextFieldState extends State<_TimeTextField> {
errorText: widget.bloc.state.timeFormatError
.fold(() => "", (error) => error),
onEditingComplete: (value) =>
widget.bloc.add(DateCalEvent.setTime(value)),
widget.bloc.add(DateCellCalendarEvent.setTime(value)),
),
),
);
@ -364,7 +364,8 @@ class _DateTypeOptionButton extends StatelessWidget {
Widget build(BuildContext context) {
final title =
"${LocaleKeys.grid_field_dateFormat.tr()} & ${LocaleKeys.grid_field_timeFormat.tr()}";
return BlocSelector<DateCalBloc, DateCalState, DateTypeOptionPB>(
return BlocSelector<DateCellCalendarBloc, DateCellCalendarState,
DateTypeOptionPB>(
selector: (state) => state.dateTypeOptionPB,
builder: (context, dateTypeOptionPB) {
return AppFlowyPopover(
@ -391,7 +392,7 @@ class _DateTypeOptionButton extends StatelessWidget {
return _CalDateTimeSetting(
dateTypeOptionPB: dateTypeOptionPB,
onEvent: (event) {
context.read<DateCalBloc>().add(event);
context.read<DateCellCalendarBloc>().add(event);
popoverMutex.close();
},
);
@ -404,7 +405,7 @@ class _DateTypeOptionButton extends StatelessWidget {
class _CalDateTimeSetting extends StatefulWidget {
final DateTypeOptionPB dateTypeOptionPB;
final Function(DateCalEvent) onEvent;
final Function(DateCellCalendarEvent) onEvent;
const _CalDateTimeSetting({
required this.dateTypeOptionPB,
required this.onEvent,
@ -430,7 +431,7 @@ class _CalDateTimeSettingState extends State<_CalDateTimeSetting> {
return DateFormatList(
selectedFormat: widget.dateTypeOptionPB.dateFormat,
onSelected: (format) {
widget.onEvent(DateCalEvent.setDateFormat(format));
widget.onEvent(DateCellCalendarEvent.setDateFormat(format));
timeSettingPopoverMutex.close();
},
);
@ -448,7 +449,7 @@ class _CalDateTimeSettingState extends State<_CalDateTimeSetting> {
return TimeFormatList(
selectedFormat: widget.dateTypeOptionPB.timeFormat,
onSelected: (format) {
widget.onEvent(DateCalEvent.setTimeFormat(format));
widget.onEvent(DateCellCalendarEvent.setTimeFormat(format));
timeSettingPopoverMutex.close();
});
},

View File

@ -1,12 +1,11 @@
import 'dart:async';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../application/cell/number_cell_bloc.dart';
import '../../layout/sizes.dart';
import 'cell_builder.dart';
import 'number_cell_bloc.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../cell_builder.dart';
class GridNumberCell extends GridCellWidget {
final CellControllerBuilder cellControllerBuilder;
@ -26,8 +25,9 @@ class _NumberCellState extends GridFocusNodeCellState<GridNumberCell> {
@override
void initState() {
final cellController = widget.cellControllerBuilder.build();
_cellBloc = getIt<NumberCellBloc>(param1: cellController)
final cellController =
widget.cellControllerBuilder.build() as NumberCellController;
_cellBloc = NumberCellBloc(cellController: cellController)
..add(const NumberCellEvent.initial());
_controller = TextEditingController(text: _cellBloc.state.cellContent);
super.initState();

View File

@ -6,10 +6,10 @@ import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.d
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../application/cell/select_option_cell_bloc.dart';
import '../../../layout/sizes.dart';
import '../cell_builder.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../cell_builder.dart';
import 'extension.dart';
import 'select_option_cell_bloc.dart';
import 'select_option_editor.dart';
class SelectOptionCellStyle extends GridCellStyle {
@ -48,7 +48,7 @@ class _SingleSelectCellState extends GridCellState<GridSingleSelectCell> {
void initState() {
final cellController =
widget.cellControllerBuilder.build() as SelectOptionCellController;
_cellBloc = getIt<SelectOptionCellBloc>(param1: cellController)
_cellBloc = SelectOptionCellBloc(cellController: cellController)
..add(const SelectOptionCellEvent.initial());
_popover = PopoverController();
super.initState();

View File

@ -1,14 +1,10 @@
import 'dart:collection';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -16,10 +12,11 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:textfield_tags/textfield_tags.dart';
import '../../../layout/sizes.dart';
import '../../common/type_option_separator.dart';
import '../../header/type_option/select_option_editor.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../../../grid/presentation/widgets/common/type_option_separator.dart';
import '../../../../grid/presentation/widgets/header/type_option/select_option_editor.dart';
import 'extension.dart';
import 'select_option_editor_bloc.dart';
import 'text_field.dart';
const double _editorPanelWidth = 300;

View File

@ -1,11 +1,10 @@
import 'dart:async';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/text_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appflowy/startup/startup.dart';
import '../../layout/sizes.dart';
import 'cell_builder.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../cell_builder.dart';
class GridTextCellStyle extends GridCellStyle {
String? placeholder;
@ -40,8 +39,9 @@ class _GridTextCellState extends GridFocusNodeCellState<GridTextCell> {
@override
void initState() {
final cellController = widget.cellControllerBuilder.build();
_cellBloc = getIt<TextCellBloc>(param1: cellController);
final cellController =
widget.cellControllerBuilder.build() as TextCellController;
_cellBloc = TextCellBloc(cellController: cellController);
_cellBloc.add(const TextCellEvent.initial());
_controller = TextEditingController(text: _cellBloc.state.content);
super.initState();

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../application/cell/url_cell_editor_bloc.dart';
import 'url_cell_editor_bloc.dart';
class URLCellEditor extends StatefulWidget {
final VoidCallback onExit;

View File

@ -10,11 +10,11 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../../application/cell/url_cell_bloc.dart';
import '../../../layout/sizes.dart';
import '../cell_accessory.dart';
import '../cell_builder.dart';
import '../../../../grid/presentation/layout/sizes.dart';
import '../../accessory/cell_accessory.dart';
import '../../cell_builder.dart';
import 'cell_editor.dart';
import 'url_cell_bloc.dart';
class GridURLCellStyle extends GridCellStyle {
String? placeholder;

View File

@ -6,10 +6,7 @@ import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
@ -17,14 +14,18 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import '../../layout/sizes.dart';
import '../cell/cell_accessory.dart';
import '../cell/prelude.dart';
import '../header/field_cell.dart';
import '../header/field_editor.dart';
import '../../grid/presentation/layout/sizes.dart';
import 'accessory/cell_accessory.dart';
import 'cell_builder.dart';
import 'cells/date_cell/date_cell.dart';
import 'cells/select_option_cell/select_option_cell.dart';
import 'cells/text_cell/text_cell.dart';
import 'cells/url_cell/url_cell.dart';
import '../../grid/presentation/widgets/header/field_cell.dart';
import '../../grid/presentation/widgets/header/field_editor.dart';
class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
final RowDataController dataController;
final RowController dataController;
final GridCellBuilder cellBuilder;
const RowDetailPage({
@ -42,6 +43,11 @@ class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
}
class _RowDetailPageState extends State<RowDetailPage> {
final padding = const EdgeInsets.symmetric(
horizontal: 40,
vertical: 20,
);
@override
Widget build(BuildContext context) {
return FlowyDialog(
@ -54,17 +60,12 @@ class _RowDetailPageState extends State<RowDetailPage> {
return bloc;
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 20),
padding: padding,
child: Column(
children: [
SizedBox(
height: 30,
child: Row(
children: const [Spacer(), _CloseButton()],
),
),
const _Header(),
Expanded(
child: _PropertyList(
child: _PropertyColumn(
cellBuilder: widget.cellBuilder,
viewId: widget.dataController.viewId,
),
@ -77,6 +78,20 @@ class _RowDetailPageState extends State<RowDetailPage> {
}
}
class _Header extends StatelessWidget {
const _Header({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
height: 30,
child: Row(
children: const [Spacer(), _CloseButton()],
),
);
}
}
class _CloseButton extends StatelessWidget {
const _CloseButton({Key? key}) : super(key: key);
@ -84,9 +99,7 @@ class _CloseButton extends StatelessWidget {
Widget build(BuildContext context) {
return FlowyIconButton(
width: 24,
onPressed: () {
FlowyOverlay.pop(context);
},
onPressed: () => FlowyOverlay.pop(context),
iconPadding: const EdgeInsets.fromLTRB(2, 2, 2, 2),
icon: svgWidget(
"home/close",
@ -96,11 +109,11 @@ class _CloseButton extends StatelessWidget {
}
}
class _PropertyList extends StatelessWidget {
class _PropertyColumn extends StatelessWidget {
final String viewId;
final GridCellBuilder cellBuilder;
final ScrollController _scrollController;
_PropertyList({
_PropertyColumn({
required this.viewId,
required this.cellBuilder,
Key? key,
@ -114,11 +127,11 @@ class _PropertyList extends StatelessWidget {
builder: (context, state) {
return Column(
children: [
Expanded(child: _wrapScrollbar(buildRowCells(state))),
Expanded(child: _wrapScrollbar(buildPropertyCells(state))),
const VSpace(10),
_CreateFieldButton(
_CreatePropertyButton(
viewId: viewId,
onClosed: _handleDidCreateField,
onClosed: _scrollToNewProperty,
),
],
);
@ -126,12 +139,12 @@ class _PropertyList extends StatelessWidget {
);
}
Widget buildRowCells(RowDetailState state) {
Widget buildPropertyCells(RowDetailState state) {
return ListView.separated(
controller: _scrollController,
itemCount: state.gridCells.length,
itemBuilder: (BuildContext context, int index) {
return _RowDetailCell(
return _PropertyCell(
cellId: state.gridCells[index],
cellBuilder: cellBuilder,
);
@ -152,7 +165,7 @@ class _PropertyList extends StatelessWidget {
);
}
void _handleDidCreateField() {
void _scrollToNewProperty() {
WidgetsBinding.instance.addPostFrameCallback((_) {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
@ -163,21 +176,21 @@ class _PropertyList extends StatelessWidget {
}
}
class _CreateFieldButton extends StatefulWidget {
class _CreatePropertyButton extends StatefulWidget {
final String viewId;
final VoidCallback onClosed;
const _CreateFieldButton({
const _CreatePropertyButton({
required this.viewId,
required this.onClosed,
Key? key,
}) : super(key: key);
@override
State<_CreateFieldButton> createState() => _CreateFieldButtonState();
State<_CreatePropertyButton> createState() => _CreatePropertyButtonState();
}
class _CreateFieldButtonState extends State<_CreateFieldButton> {
class _CreatePropertyButtonState extends State<_CreatePropertyButton> {
late PopoverController popoverController;
@override
@ -234,20 +247,20 @@ class _CreateFieldButtonState extends State<_CreateFieldButton> {
}
}
class _RowDetailCell extends StatefulWidget {
class _PropertyCell extends StatefulWidget {
final CellIdentifier cellId;
final GridCellBuilder cellBuilder;
const _RowDetailCell({
const _PropertyCell({
required this.cellId,
required this.cellBuilder,
Key? key,
}) : super(key: key);
@override
State<StatefulWidget> createState() => _RowDetailCellState();
State<StatefulWidget> createState() => _PropertyCellState();
}
class _RowDetailCellState extends State<_RowDetailCell> {
class _PropertyCellState extends State<_PropertyCell> {
final PopoverController popover = PopoverController();
@override

View File

@ -8,8 +8,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/widget/rounded_button.dart';
import 'package:flutter/material.dart';

View File

@ -1,15 +1,8 @@
import 'package:appflowy/core/network_monitor.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:appflowy/plugins/database_view/application/field/field_action_sheet_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/checkbox_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/number_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/text_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/grid_header_bloc.dart';
import 'package:appflowy/user/application/user_listener.dart';
import 'package:appflowy/user/application/user_service.dart';
@ -161,38 +154,6 @@ void _resolveGridDeps(GetIt getIt) {
(data, _) => FieldActionSheetBloc(fieldCellContext: data),
);
getIt.registerFactoryParam<TextCellBloc, TextCellController, void>(
(context, _) => TextCellBloc(
cellController: context,
),
);
getIt.registerFactoryParam<SelectOptionCellBloc, SelectOptionCellController,
void>(
(context, _) => SelectOptionCellBloc(
cellController: context,
),
);
getIt.registerFactoryParam<NumberCellBloc, TextCellController, void>(
(context, _) => NumberCellBloc(
cellController: context,
),
);
getIt.registerFactoryParam<DateCellBloc, DateCellController, void>(
(context, _) => DateCellBloc(
cellController: context,
),
);
getIt.registerFactoryParam<CheckboxCellBloc, TextCellController, void>(
(cellData, _) => CheckboxCellBloc(
service: CellBackendService(),
cellController: cellData,
),
);
getIt.registerFactoryParam<DatabasePropertyBloc, String, FieldController>(
(viewId, cache) =>
DatabasePropertyBloc(viewId: viewId, fieldController: cache),

View File

@ -6,7 +6,6 @@ import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/container.dart';
import 'package:flutter/material.dart';
import 'package:appflowy/generated/locale_keys.g.dart';

View File

@ -5,7 +5,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

View File

@ -1,11 +1,9 @@
import 'package:appflowy/util/file_picker/file_picker_service.dart';
import 'package:appflowy/workspace/application/settings/settings_location_cubit.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/services.dart';
import '../../../../generated/locale_keys.g.dart';

View File

@ -4,9 +4,6 @@ import 'package:appflowy/workspace/application/settings/settings_file_exporter_c
import 'package:dartz/dartz.dart' as dartz;
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
import 'package:appflowy_backend/protobuf/flowy-folder/workspace.pb.dart';

View File

@ -1,7 +1,6 @@
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
import 'package:styled_widget/styled_widget.dart';

View File

@ -4,8 +4,6 @@ import 'package:appflowy_editor_plugins/src/extensions/theme_extension.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/color_picker.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

View File

@ -12,3 +12,11 @@ export 'src/flowy_overlay/flowy_dialog.dart';
export 'src/flowy_overlay/appflowy_popover.dart';
export 'style_widget/text.dart';
export 'style_widget/text_field.dart';
export 'style_widget/button.dart';
export 'style_widget/icon_button.dart';
export 'style_widget/scrolling/styled_scroll_bar.dart';
export '/widget/spacing.dart';
export 'style_widget/scrolling/styled_list.dart';
export 'style_widget/button.dart';
export 'style_widget/color_picker.dart';

View File

@ -1,8 +1,5 @@
import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
class ColorOption {

View File

@ -1,7 +1,7 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart';
import 'package:appflowy/plugins/database_view/board/application/board_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor_bloc.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:flutter_test/flutter_test.dart';

View File

@ -113,7 +113,7 @@ class BoardTestContext {
final RowInfo rowInfo = rowInfos.last;
final rowCache = _boardDataController.rowCache;
final rowDataController = RowDataController(
final rowDataController = RowController(
viewId: rowInfo.viewId,
rowId: rowInfo.rowPB.id,
rowCache: rowCache,

View File

@ -1,4 +1,4 @@
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor_bloc.dart';
import 'package:dartz/dartz.dart';
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';

View File

@ -72,7 +72,7 @@ class GridTestContext {
final RowInfo rowInfo = rowInfos[rowIndex];
final rowCache = gridController.rowCache;
final rowDataController = RowDataController(
final rowDataController = RowController(
rowId: rowInfo.rowPB.id,
viewId: rowInfo.viewId,
rowCache: rowCache,

View File

@ -1,4 +1,4 @@
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/text_field.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/text_field.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {

View File

@ -1,6 +1,6 @@
import 'dart:collection';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/text_field.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/text_field.dart';
import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';