refactor: refactor multi-select typeOption

This commit is contained in:
appflowy
2022-08-10 20:12:05 +08:00
parent 32d5edff81
commit 1bdd863b75
22 changed files with 58 additions and 206 deletions

View File

@ -56,6 +56,9 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
didReceiveGridUpdate: (GridPB grid) { didReceiveGridUpdate: (GridPB grid) {
emit(state.copyWith(grid: Some(grid))); emit(state.copyWith(grid: Some(grid)));
}, },
groupByField: (GridFieldPB field) {
emit(state.copyWith(groupField: Some(field)));
},
); );
}, },
); );
@ -97,11 +100,16 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
} }
void _buildColumns(UnmodifiableListView<GridFieldPB> fields) { void _buildColumns(UnmodifiableListView<GridFieldPB> fields) {
GridFieldPB? groupField;
for (final field in fields) { for (final field in fields) {
if (field.fieldType == FieldType.SingleSelect) { if (field.fieldType == FieldType.SingleSelect) {
groupField = field;
_buildColumnsFromSingleSelect(field); _buildColumnsFromSingleSelect(field);
} }
} }
assert(groupField != null);
add(BoardEvent.groupByField(groupField!));
} }
void _buildColumnsFromSingleSelect(GridFieldPB field) { void _buildColumnsFromSingleSelect(GridFieldPB field) {

View File

@ -17,7 +17,7 @@ import 'package:app_flowy/plugins/grid/application/field/field_service.dart';
import 'dart:convert' show utf8; import 'dart:convert' show utf8;
import '../../field/field_cache.dart'; import '../../field/field_cache.dart';
import '../../field/type_option/type_option_data_controller.dart'; import '../../field/type_option/type_option_context.dart';
import 'cell_field_notifier.dart'; import 'cell_field_notifier.dart';
part 'cell_service.freezed.dart'; part 'cell_service.freezed.dart';
part 'cell_data_loader.dart'; part 'cell_data_loader.dart';

View File

@ -2,9 +2,11 @@ import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'dart:async'; import 'dart:async';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'type_option/type_option_data_controller.dart'; import 'type_option/type_option_context.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'type_option/type_option_data_controller.dart';
part 'field_editor_bloc.freezed.dart'; part 'field_editor_bloc.freezed.dart';
class FieldEditorBloc extends Bloc<FieldEditorEvent, FieldEditorState> { class FieldEditorBloc extends Bloc<FieldEditorEvent, FieldEditorState> {

View File

@ -2,6 +2,7 @@ import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';
import 'type_option/type_option_data_controller.dart'; import 'type_option/type_option_data_controller.dart';
part 'field_type_option_edit_bloc.freezed.dart'; part 'field_type_option_edit_bloc.freezed.dart';

View File

@ -5,16 +5,9 @@ import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';
import 'package:protobuf/protobuf.dart'; import 'package:protobuf/protobuf.dart';
import 'type_option_data_controller.dart'; import 'type_option_context.dart';
part 'date_bloc.freezed.dart'; part 'date_bloc.freezed.dart';
class DateTypeOptionDataParser extends TypeOptionDataParser<DateTypeOption> {
@override
DateTypeOption fromBuffer(List<int> buffer) {
return DateTypeOption.fromBuffer(buffer);
}
}
class DateTypeOptionBloc class DateTypeOptionBloc
extends Bloc<DateTypeOptionEvent, DateTypeOptionState> { extends Bloc<DateTypeOptionEvent, DateTypeOptionState> {
DateTypeOptionBloc({required DateTypeOptionContext typeOptionContext}) DateTypeOptionBloc({required DateTypeOptionContext typeOptionContext})

View File

@ -3,6 +3,7 @@ import 'package:flowy_sdk/protobuf/flowy-grid/multi_select_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/select_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/select_option.pb.dart';
import 'dart:async'; import 'dart:async';
import 'select_option_type_option_bloc.dart'; import 'select_option_type_option_bloc.dart';
import 'type_option_context.dart';
import 'type_option_data_controller.dart'; import 'type_option_data_controller.dart';
import 'type_option_service.dart'; import 'type_option_service.dart';
import 'package:protobuf/protobuf.dart'; import 'package:protobuf/protobuf.dart';
@ -72,11 +73,3 @@ class MultiSelectTypeOptionContext
}; };
} }
} }
class MultiSelectTypeOptionWidgetDataParser
extends TypeOptionDataParser<MultiSelectTypeOption> {
@override
MultiSelectTypeOption fromBuffer(List<int> buffer) {
return MultiSelectTypeOption.fromBuffer(buffer);
}
}

View File

@ -4,18 +4,10 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';
import 'package:protobuf/protobuf.dart'; import 'package:protobuf/protobuf.dart';
import 'type_option_data_controller.dart'; import 'type_option_context.dart';
part 'number_bloc.freezed.dart'; part 'number_bloc.freezed.dart';
class NumberTypeOptionWidgetDataParser
extends TypeOptionDataParser<NumberTypeOption> {
@override
NumberTypeOption fromBuffer(List<int> buffer) {
return NumberTypeOption.fromBuffer(buffer);
}
}
class NumberTypeOptionBloc class NumberTypeOptionBloc
extends Bloc<NumberTypeOptionEvent, NumberTypeOptionState> { extends Bloc<NumberTypeOptionEvent, NumberTypeOptionState> {
NumberTypeOptionBloc({required NumberTypeOptionContext typeOptionContext}) NumberTypeOptionBloc({required NumberTypeOptionContext typeOptionContext})

View File

@ -4,20 +4,26 @@ import 'package:flowy_sdk/protobuf/flowy-grid/single_select_type_option.pb.dart'
import 'dart:async'; import 'dart:async';
import 'package:protobuf/protobuf.dart'; import 'package:protobuf/protobuf.dart';
import 'select_option_type_option_bloc.dart'; import 'select_option_type_option_bloc.dart';
import 'type_option_data_controller.dart'; import 'type_option_context.dart';
import 'type_option_service.dart'; import 'type_option_service.dart';
class SingleSelectTypeOptionContext with ISelectOptionAction { class SingleSelectAction with ISelectOptionAction {
final String gridId;
final String fieldId;
final SingleSelectTypeOptionContext typeOptionContext;
final TypeOptionFFIService service; final TypeOptionFFIService service;
SingleSelectTypeOptionContext({ SingleSelectAction({
required SingleSelectTypeOptionWidgetDataParser dataBuilder, required this.gridId,
required TypeOptionDataController dataController, required this.fieldId,
}) : service = TypeOptionFFIService( required this.typeOptionContext,
gridId: dataController.gridId, }) : service = TypeOptionFFIService(gridId: gridId, fieldId: fieldId);
fieldId: dataController.field.id,
), SingleSelectTypeOptionPB get typeOption => typeOptionContext.typeOption;
super(dataParser: dataBuilder, dataController: dataController);
set typeOption(SingleSelectTypeOptionPB newTypeOption) {
typeOptionContext.typeOption = newTypeOption;
}
@override @override
List<SelectOptionPB> Function(SelectOptionPB) get deleteOption { List<SelectOptionPB> Function(SelectOptionPB) get deleteOption {
@ -71,11 +77,3 @@ class SingleSelectTypeOptionContext with ISelectOptionAction {
}; };
} }
} }
class SingleSelectTypeOptionWidgetDataParser
extends TypeOptionDataParser<SingleSelectTypeOptionPB> {
@override
SingleSelectTypeOptionPB fromBuffer(List<int> buffer) {
return SingleSelectTypeOptionPB.fromBuffer(buffer);
}
}

View File

@ -1,127 +1,12 @@
import 'package:flowy_infra/notifier.dart'; import 'package:flowy_infra/notifier.dart';
import 'package:flowy_sdk/dispatch/dispatch.dart';
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart';
import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/number_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/single_select_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/text_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/url_type_option.pb.dart';
import 'package:protobuf/protobuf.dart'; import 'package:protobuf/protobuf.dart';
import 'package:flowy_sdk/log.dart'; import 'package:flowy_sdk/log.dart';
abstract class TypeOptionDataParser<T> { import 'type_option_context.dart';
T fromBuffer(List<int> buffer);
}
typedef NumberTypeOptionContext = TypeOptionContext<NumberTypeOption>;
typedef RichTextTypeOptionContext = TypeOptionContext<RichTextTypeOption>;
typedef CheckboxTypeOptionContext = TypeOptionContext<CheckboxTypeOption>;
typedef URLTypeOptionContext = TypeOptionContext<URLTypeOption>;
typedef DateTypeOptionContext = TypeOptionContext<DateTypeOption>;
typedef SingleSelectTypeOptionContext
= TypeOptionContext<SingleSelectTypeOptionPB>;
class TypeOptionContext<T extends GeneratedMessage> {
T? _typeOptionObject;
final TypeOptionDataParser<T> dataParser;
final TypeOptionDataController _dataController;
TypeOptionContext({
required this.dataParser,
required TypeOptionDataController dataController,
}) : _dataController = dataController;
String get gridId => _dataController.gridId;
Future<void> loadTypeOptionData({
required void Function(T) onCompleted,
required void Function(FlowyError) onError,
}) async {
await _dataController.loadTypeOptionData().then((result) {
result.fold((l) => null, (err) => onError(err));
});
onCompleted(typeOption);
}
T get typeOption {
if (_typeOptionObject != null) {
return _typeOptionObject!;
}
final T object = _dataController.getTypeOption(dataParser);
_typeOptionObject = object;
return object;
}
set typeOption(T typeOption) {
_dataController.typeOptionData = typeOption.writeToBuffer();
_typeOptionObject = typeOption;
}
}
abstract class TypeOptionFieldDelegate {
void onFieldChanged(void Function(String) callback);
void dispose();
}
abstract class IFieldTypeOptionLoader {
String get gridId;
Future<Either<FieldTypeOptionDataPB, FlowyError>> load();
Future<Either<FieldTypeOptionDataPB, FlowyError>> switchToField(
String fieldId, FieldType fieldType) {
final payload = EditFieldPayloadPB.create()
..gridId = gridId
..fieldId = fieldId
..fieldType = fieldType;
return GridEventSwitchToField(payload).send();
}
}
class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader {
@override
final String gridId;
NewFieldTypeOptionLoader({
required this.gridId,
});
@override
Future<Either<FieldTypeOptionDataPB, FlowyError>> load() {
final payload = CreateFieldPayloadPB.create()
..gridId = gridId
..fieldType = FieldType.RichText;
return GridEventCreateFieldTypeOption(payload).send();
}
}
class FieldTypeOptionLoader extends IFieldTypeOptionLoader {
@override
final String gridId;
final GridFieldPB field;
FieldTypeOptionLoader({
required this.gridId,
required this.field,
});
@override
Future<Either<FieldTypeOptionDataPB, FlowyError>> load() {
final payload = GridFieldTypeOptionIdPB.create()
..gridId = gridId
..fieldId = field.id
..fieldType = field.fieldType;
return GridEventGetFieldTypeOption(payload).send();
}
}
class TypeOptionDataController { class TypeOptionDataController {
final String gridId; final String gridId;

View File

@ -1,5 +1,6 @@
import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:app_flowy/generated/locale_keys.g.dart';
import 'package:app_flowy/plugins/grid/application/cell/date_cal_bloc.dart'; import 'package:app_flowy/plugins/grid/application/cell/date_cal_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.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';

View File

@ -1,6 +1,6 @@
import 'package:app_flowy/plugins/grid/application/field/field_cell_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/field_cell_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.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/style_widget/button.dart'; import 'package:flowy_infra_ui/style_widget/button.dart';

View File

@ -1,5 +1,5 @@
import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flowy_infra_ui/style_widget/text.dart';

View File

@ -1,5 +1,5 @@
import 'package:app_flowy/plugins/grid/application/field/field_cache.dart'; import 'package:app_flowy/plugins/grid/application/field/field_cache.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:app_flowy/startup/startup.dart'; import 'package:app_flowy/startup/startup.dart';
import 'package:app_flowy/plugins/grid/application/prelude.dart'; import 'package:app_flowy/plugins/grid/application/prelude.dart';
import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/image.dart';

View File

@ -1,6 +1,7 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:app_flowy/plugins/grid/application/field/type_option/multi_select_type_option.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/multi_select_type_option.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart';
@ -86,7 +87,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({
gridId: gridId, gridId: gridId,
fieldType: fieldType, fieldType: fieldType,
dataController: dataController, dataController: dataController,
) as SingleSelectTypeOptionContext, ),
overlayDelegate, overlayDelegate,
); );
case FieldType.MultiSelect: case FieldType.MultiSelect:
@ -165,7 +166,7 @@ TypeOptionContext<T>
case FieldType.SingleSelect: case FieldType.SingleSelect:
return SingleSelectTypeOptionContext( return SingleSelectTypeOptionContext(
dataController: dataController, dataController: dataController,
dataBuilder: SingleSelectTypeOptionWidgetDataParser(), dataParser: SingleSelectTypeOptionWidgetDataParser(),
) as TypeOptionContext<T>; ) as TypeOptionContext<T>;
case FieldType.MultiSelect: case FieldType.MultiSelect:
return MultiSelectTypeOptionContext( return MultiSelectTypeOptionContext(

View File

@ -1,18 +1,7 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'builder.dart'; import 'builder.dart';
typedef CheckboxTypeOptionContext = TypeOptionContext<CheckboxTypeOption>;
class CheckboxTypeOptionWidgetDataParser
extends TypeOptionDataParser<CheckboxTypeOption> {
@override
CheckboxTypeOption fromBuffer(List<int> buffer) {
return CheckboxTypeOption.fromBuffer(buffer);
}
}
class CheckboxTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { class CheckboxTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder {
CheckboxTypeOptionWidgetBuilder(CheckboxTypeOptionContext typeOptionContext); CheckboxTypeOptionWidgetBuilder(CheckboxTypeOptionContext typeOptionContext);

View File

@ -1,4 +1,5 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/date_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/date_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:easy_localization/easy_localization.dart' hide DateFormat; import 'package:easy_localization/easy_localization.dart' hide DateFormat;
import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:app_flowy/generated/locale_keys.g.dart';
import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/image.dart';

View File

@ -1,5 +1,6 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/number_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/number_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/number_format_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/number_format_bloc.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.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:flowy_infra_ui/flowy_infra_ui.dart';

View File

@ -1,16 +1,7 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/text_type_option.pb.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'builder.dart'; import 'builder.dart';
class RichTextTypeOptionWidgetDataParser
extends TypeOptionDataParser<RichTextTypeOption> {
@override
RichTextTypeOption fromBuffer(List<int> buffer) {
return RichTextTypeOption.fromBuffer(buffer);
}
}
class RichTextTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { class RichTextTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder {
RichTextTypeOptionWidgetBuilder(RichTextTypeOptionContext typeOptionContext); RichTextTypeOptionWidgetBuilder(RichTextTypeOptionContext typeOptionContext);

View File

@ -1,4 +1,5 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/single_select_type_option.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/single_select_type_option.dart';
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../field_type_option_editor.dart'; import '../field_type_option_editor.dart';
import 'builder.dart'; import 'builder.dart';
@ -8,10 +9,14 @@ class SingleSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder {
final SingleSelectTypeOptionWidget _widget; final SingleSelectTypeOptionWidget _widget;
SingleSelectTypeOptionWidgetBuilder( SingleSelectTypeOptionWidgetBuilder(
SingleSelectTypeOptionContext typeOptionContext, SingleSelectTypeOptionContext singleSelectTypeOption,
TypeOptionOverlayDelegate overlayDelegate, TypeOptionOverlayDelegate overlayDelegate,
) : _widget = SingleSelectTypeOptionWidget( ) : _widget = SingleSelectTypeOptionWidget(
typeOptionContext: typeOptionContext, selectOptionAction: SingleSelectAction(
fieldId: singleSelectTypeOption.fieldId,
gridId: singleSelectTypeOption.gridId,
typeOptionContext: singleSelectTypeOption,
),
overlayDelegate: overlayDelegate, overlayDelegate: overlayDelegate,
); );
@ -20,11 +25,11 @@ class SingleSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder {
} }
class SingleSelectTypeOptionWidget extends TypeOptionWidget { class SingleSelectTypeOptionWidget extends TypeOptionWidget {
final SingleSelectTypeOptionContext typeOptionContext; final SingleSelectAction selectOptionAction;
final TypeOptionOverlayDelegate overlayDelegate; final TypeOptionOverlayDelegate overlayDelegate;
const SingleSelectTypeOptionWidget({ const SingleSelectTypeOptionWidget({
required this.typeOptionContext, required this.selectOptionAction,
required this.overlayDelegate, required this.overlayDelegate,
Key? key, Key? key,
}) : super(key: key); }) : super(key: key);
@ -32,10 +37,10 @@ class SingleSelectTypeOptionWidget extends TypeOptionWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SelectOptionTypeOptionWidget( return SelectOptionTypeOptionWidget(
options: typeOptionContext.typeOption.options, options: selectOptionAction.typeOption.options,
beginEdit: () => overlayDelegate.hideOverlay(context), beginEdit: () => overlayDelegate.hideOverlay(context),
overlayDelegate: overlayDelegate, overlayDelegate: overlayDelegate,
typeOptionAction: typeOptionContext, typeOptionAction: selectOptionAction,
// key: ValueKey(state.typeOption.hashCode), // key: ValueKey(state.typeOption.hashCode),
); );
} }

View File

@ -1,16 +1,7 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:flowy_sdk/protobuf/flowy-grid/url_type_option.pb.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'builder.dart'; import 'builder.dart';
class URLTypeOptionWidgetDataParser
extends TypeOptionDataParser<URLTypeOption> {
@override
URLTypeOption fromBuffer(List<int> buffer) {
return URLTypeOption.fromBuffer(buffer);
}
}
class URLTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { class URLTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder {
URLTypeOptionWidgetBuilder(URLTypeOptionContext typeOptionContext); URLTypeOptionWidgetBuilder(URLTypeOptionContext typeOptionContext);

View File

@ -1,5 +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/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart';
import 'package:app_flowy/plugins/grid/application/row/row_detail_bloc.dart'; import 'package:app_flowy/plugins/grid/application/row/row_detail_bloc.dart';
import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/image.dart';

View File

@ -1,4 +1,4 @@
import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart';
import 'package:app_flowy/startup/startup.dart'; import 'package:app_flowy/startup/startup.dart';
import 'package:app_flowy/plugins/grid/application/setting/property_bloc.dart'; import 'package:app_flowy/plugins/grid/application/setting/property_bloc.dart';
import 'package:app_flowy/plugins/grid/presentation/widgets/header/field_type_extension.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/header/field_type_extension.dart';