瀏覽代碼

chore: add cell cache

appflowy 3 年之前
父節點
當前提交
e647fd0a57
共有 23 個文件被更改,包括 131 次插入91 次删除
  1. 6 6
      frontend/app_flowy/lib/startup/deps_resolver.dart
  2. 0 0
      frontend/app_flowy/lib/workspace/application/grid/cell/cell_listener.dart
  3. 75 0
      frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart
  4. 4 4
      frontend/app_flowy/lib/workspace/application/grid/cell/checkbox_cell_bloc.dart
  5. 7 7
      frontend/app_flowy/lib/workspace/application/grid/cell/date_cell_bloc.dart
  6. 4 4
      frontend/app_flowy/lib/workspace/application/grid/cell/number_cell_bloc.dart
  7. 0 0
      frontend/app_flowy/lib/workspace/application/grid/cell/select_option_service.dart
  8. 5 5
      frontend/app_flowy/lib/workspace/application/grid/cell/selection_cell_bloc.dart
  9. 3 3
      frontend/app_flowy/lib/workspace/application/grid/cell/selection_editor_bloc.dart
  10. 4 4
      frontend/app_flowy/lib/workspace/application/grid/cell/text_cell_bloc.dart
  11. 0 35
      frontend/app_flowy/lib/workspace/application/grid/cell_bloc/cell_service.dart
  12. 6 6
      frontend/app_flowy/lib/workspace/application/grid/prelude.dart
  13. 2 2
      frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart
  14. 3 3
      frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart
  15. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart
  16. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/checkbox_cell.dart
  17. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/date_cell.dart
  18. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/number_cell.dart
  19. 2 2
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart
  20. 3 3
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_editor.dart
  21. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/text_cell.dart
  22. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/cell/number_cell.dart
  23. 1 1
      frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/number_cell.dart

+ 6 - 6
frontend/app_flowy/lib/startup/deps_resolver.dart

@@ -171,32 +171,32 @@ void _resolveGridDeps(GetIt getIt) {
     ),
   );
 
-  getIt.registerFactoryParam<TextCellBloc, CellData, void>(
+  getIt.registerFactoryParam<TextCellBloc, GridCellIdentifier, void>(
     (cellData, _) => TextCellBloc(
       service: CellService(),
       cellData: cellData,
     ),
   );
 
-  getIt.registerFactoryParam<SelectionCellBloc, CellData, void>(
+  getIt.registerFactoryParam<SelectionCellBloc, GridCellIdentifier, void>(
     (cellData, _) => SelectionCellBloc(
       cellData: cellData,
     ),
   );
 
-  getIt.registerFactoryParam<NumberCellBloc, CellData, void>(
+  getIt.registerFactoryParam<NumberCellBloc, GridCellIdentifier, void>(
     (cellData, _) => NumberCellBloc(
       cellData: cellData,
     ),
   );
 
-  getIt.registerFactoryParam<DateCellBloc, CellData, void>(
+  getIt.registerFactoryParam<DateCellBloc, GridCellIdentifier, void>(
     (cellData, _) => DateCellBloc(
-      cellData: cellData,
+      cellIdentifier: cellData,
     ),
   );
 
-  getIt.registerFactoryParam<CheckboxCellBloc, CellData, void>(
+  getIt.registerFactoryParam<CheckboxCellBloc, GridCellIdentifier, void>(
     (cellData, _) => CheckboxCellBloc(
       service: CellService(),
       cellData: cellData,

+ 0 - 0
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/cell_listener.dart → frontend/app_flowy/lib/workspace/application/grid/cell/cell_listener.dart


+ 75 - 0
frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart

@@ -0,0 +1,75 @@
+import 'dart:collection';
+
+import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
+import 'package:flowy_sdk/log.dart';
+import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
+import 'package:dartz/dartz.dart';
+import 'package:flowy_sdk/dispatch/dispatch.dart';
+import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
+import 'package:flowy_sdk/protobuf/flowy-grid/cell_entities.pb.dart';
+
+class CellService {
+  CellService();
+
+  Future<Either<void, FlowyError>> updateCell({
+    required String gridId,
+    required String fieldId,
+    required String rowId,
+    required String data,
+  }) {
+    final payload = CellChangeset.create()
+      ..gridId = gridId
+      ..fieldId = fieldId
+      ..rowId = rowId
+      ..data = data;
+    return GridEventUpdateCell(payload).send();
+  }
+
+  Future<Either<Cell, FlowyError>> getCell({
+    required String gridId,
+    required String fieldId,
+    required String rowId,
+  }) {
+    final payload = CellIdentifierPayload.create()
+      ..gridId = gridId
+      ..fieldId = fieldId
+      ..rowId = rowId;
+    return GridEventGetCell(payload).send();
+  }
+}
+
+class CellCache {
+  final CellService _cellService;
+  final HashMap<String, Cell> _cellDataMap = HashMap();
+
+  CellCache() : _cellService = CellService();
+
+  Future<Option<Cell>> getCellData(GridCellIdentifier identifier) async {
+    final cellId = _cellId(identifier);
+    final Cell? data = _cellDataMap[cellId];
+    if (data != null) {
+      return Future(() => Some(data));
+    }
+
+    final result = await _cellService.getCell(
+      gridId: identifier.gridId,
+      fieldId: identifier.field.id,
+      rowId: identifier.rowId,
+    );
+
+    return result.fold(
+      (cell) {
+        _cellDataMap[_cellId(identifier)] = cell;
+        return Some(cell);
+      },
+      (err) {
+        Log.error(err);
+        return none();
+      },
+    );
+  }
+
+  String _cellId(GridCellIdentifier identifier) {
+    return "${identifier.rowId}/${identifier.field.id}";
+  }
+}

+ 4 - 4
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/checkbox_cell_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/checkbox_cell_bloc.dart

@@ -1,4 +1,4 @@
-import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
+import 'package:app_flowy/workspace/application/grid/cell/cell_listener.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:flowy_sdk/log.dart';
 import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart' show Cell;
@@ -15,7 +15,7 @@ class CheckboxCellBloc extends Bloc<CheckboxCellEvent, CheckboxCellState> {
 
   CheckboxCellBloc({
     required CellService service,
-    required CellData cellData,
+    required GridCellIdentifier cellData,
   })  : _service = service,
         _listener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
         super(CheckboxCellState.initial(cellData)) {
@@ -87,11 +87,11 @@ class CheckboxCellEvent with _$CheckboxCellEvent {
 @freezed
 class CheckboxCellState with _$CheckboxCellState {
   const factory CheckboxCellState({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
     required bool isSelected,
   }) = _CheckboxCellState;
 
-  factory CheckboxCellState.initial(CellData cellData) {
+  factory CheckboxCellState.initial(GridCellIdentifier cellData) {
     return CheckboxCellState(cellData: cellData, isSelected: _isSelected(cellData.cell));
   }
 }

+ 7 - 7
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/date_cell_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/date_cell_bloc.dart

@@ -1,4 +1,4 @@
-import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
+import 'package:app_flowy/workspace/application/grid/cell/cell_listener.dart';
 import 'package:app_flowy/workspace/application/grid/field/field_listener.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:flowy_sdk/log.dart';
@@ -15,11 +15,11 @@ class DateCellBloc extends Bloc<DateCellEvent, DateCellState> {
   final CellListener _cellListener;
   final SingleFieldListener _fieldListener;
 
-  DateCellBloc({required CellData cellData})
+  DateCellBloc({required GridCellIdentifier cellIdentifier})
       : _service = CellService(),
-        _cellListener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
-        _fieldListener = SingleFieldListener(fieldId: cellData.field.id),
-        super(DateCellState.initial(cellData)) {
+        _cellListener = CellListener(rowId: cellIdentifier.rowId, fieldId: cellIdentifier.field.id),
+        _fieldListener = SingleFieldListener(fieldId: cellIdentifier.field.id),
+        super(DateCellState.initial(cellIdentifier)) {
     on<DateCellEvent>(
       (event, emit) async {
         event.map(
@@ -106,13 +106,13 @@ class DateCellEvent with _$DateCellEvent {
 @freezed
 class DateCellState with _$DateCellState {
   const factory DateCellState({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
     required String content,
     required Field field,
     DateTime? selectedDay,
   }) = _DateCellState;
 
-  factory DateCellState.initial(CellData cellData) => DateCellState(
+  factory DateCellState.initial(GridCellIdentifier cellData) => DateCellState(
         cellData: cellData,
         field: cellData.field,
         content: cellData.cell?.content ?? "",

+ 4 - 4
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/number_cell_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/number_cell_bloc.dart

@@ -1,4 +1,4 @@
-import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
+import 'package:app_flowy/workspace/application/grid/cell/cell_listener.dart';
 import 'package:app_flowy/workspace/application/grid/field/field_listener.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:flowy_sdk/log.dart';
@@ -16,7 +16,7 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
   final SingleFieldListener _fieldListener;
 
   NumberCellBloc({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
   })  : _service = CellService(),
         _cellListener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
         _fieldListener = SingleFieldListener(fieldId: cellData.field.id),
@@ -105,11 +105,11 @@ class NumberCellEvent with _$NumberCellEvent {
 @freezed
 class NumberCellState with _$NumberCellState {
   const factory NumberCellState({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
     required String content,
   }) = _NumberCellState;
 
-  factory NumberCellState.initial(CellData cellData) {
+  factory NumberCellState.initial(GridCellIdentifier cellData) {
     return NumberCellState(cellData: cellData, content: cellData.cell?.content ?? "");
   }
 }

+ 0 - 0
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/select_option_service.dart → frontend/app_flowy/lib/workspace/application/grid/cell/select_option_service.dart


+ 5 - 5
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/selection_cell_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/selection_cell_bloc.dart

@@ -1,5 +1,5 @@
-import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
-import 'package:app_flowy/workspace/application/grid/cell_bloc/select_option_service.dart';
+import 'package:app_flowy/workspace/application/grid/cell/cell_listener.dart';
+import 'package:app_flowy/workspace/application/grid/cell/select_option_service.dart';
 import 'package:app_flowy/workspace/application/grid/field/field_listener.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:flowy_sdk/log.dart';
@@ -16,7 +16,7 @@ class SelectionCellBloc extends Bloc<SelectionCellEvent, SelectionCellState> {
   final SingleFieldListener _fieldListener;
 
   SelectionCellBloc({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
   })  : _service = SelectOptionService(),
         _cellListener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
         _fieldListener = SingleFieldListener(fieldId: cellData.field.id),
@@ -93,12 +93,12 @@ class SelectionCellEvent with _$SelectionCellEvent {
 @freezed
 class SelectionCellState with _$SelectionCellState {
   const factory SelectionCellState({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
     required List<SelectOption> options,
     required List<SelectOption> selectedOptions,
   }) = _SelectionCellState;
 
-  factory SelectionCellState.initial(CellData cellData) => SelectionCellState(
+  factory SelectionCellState.initial(GridCellIdentifier cellData) => SelectionCellState(
         cellData: cellData,
         options: [],
         selectedOptions: [],

+ 3 - 3
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/selection_editor_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/selection_editor_bloc.dart

@@ -1,4 +1,4 @@
-import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
+import 'package:app_flowy/workspace/application/grid/cell/cell_listener.dart';
 import 'package:app_flowy/workspace/application/grid/field/field_listener.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:flowy_sdk/log.dart';
@@ -18,7 +18,7 @@ class SelectOptionEditorBloc extends Bloc<SelectOptionEditorEvent, SelectOptionE
   Timer? _delayOperation;
 
   SelectOptionEditorBloc({
-    required CellData cellData,
+    required GridCellIdentifier cellData,
     required List<SelectOption> options,
     required List<SelectOption> selectedOptions,
   })  : _selectOptionService = SelectOptionService(),
@@ -174,7 +174,7 @@ class SelectOptionEditorState with _$SelectOptionEditorState {
   }) = _SelectOptionEditorState;
 
   factory SelectOptionEditorState.initial(
-    CellData cellData,
+    GridCellIdentifier cellData,
     List<SelectOption> options,
     List<SelectOption> selectedOptions,
   ) {

+ 4 - 4
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/text_cell_bloc.dart → frontend/app_flowy/lib/workspace/application/grid/cell/text_cell_bloc.dart

@@ -11,7 +11,7 @@ class TextCellBloc extends Bloc<TextCellEvent, TextCellState> {
 
   TextCellBloc({
     required this.service,
-    required CellData cellData,
+    required GridCellIdentifier cellData,
   }) : super(TextCellState.initial(cellData)) {
     on<TextCellEvent>(
       (event, emit) async {
@@ -53,7 +53,7 @@ class TextCellBloc extends Bloc<TextCellEvent, TextCellState> {
 @freezed
 class TextCellEvent with _$TextCellEvent {
   const factory TextCellEvent.initial() = _InitialCell;
-  const factory TextCellEvent.didReceiveCellData(CellData cellData) = _DidReceiveCellData;
+  const factory TextCellEvent.didReceiveCellData(GridCellIdentifier cellData) = _DidReceiveCellData;
   const factory TextCellEvent.updateText(String text) = _UpdateText;
 }
 
@@ -61,10 +61,10 @@ class TextCellEvent with _$TextCellEvent {
 class TextCellState with _$TextCellState {
   const factory TextCellState({
     required String content,
-    required CellData cellData,
+    required GridCellIdentifier cellData,
   }) = _TextCellState;
 
-  factory TextCellState.initial(CellData cellData) => TextCellState(
+  factory TextCellState.initial(GridCellIdentifier cellData) => TextCellState(
         content: cellData.cell?.content ?? "",
         cellData: cellData,
       );

+ 0 - 35
frontend/app_flowy/lib/workspace/application/grid/cell_bloc/cell_service.dart

@@ -1,35 +0,0 @@
-import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
-import 'package:dartz/dartz.dart';
-import 'package:flowy_sdk/dispatch/dispatch.dart';
-import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
-import 'package:flowy_sdk/protobuf/flowy-grid/cell_entities.pb.dart';
-
-class CellService {
-  CellService();
-
-  Future<Either<void, FlowyError>> updateCell({
-    required String gridId,
-    required String fieldId,
-    required String rowId,
-    required String data,
-  }) {
-    final payload = CellChangeset.create()
-      ..gridId = gridId
-      ..fieldId = fieldId
-      ..rowId = rowId
-      ..data = data;
-    return GridEventUpdateCell(payload).send();
-  }
-
-  Future<Either<Cell, FlowyError>> getCell({
-    required String gridId,
-    required String fieldId,
-    required String rowId,
-  }) {
-    final payload = CellIdentifierPayload.create()
-      ..gridId = gridId
-      ..fieldId = fieldId
-      ..rowId = rowId;
-    return GridEventGetCell(payload).send();
-  }
-}

+ 6 - 6
frontend/app_flowy/lib/workspace/application/grid/prelude.dart

@@ -16,12 +16,12 @@ export 'field/type_option/number_bloc.dart';
 export 'field/type_option/single_select_bloc.dart';
 
 // Cell
-export 'cell_bloc/text_cell_bloc.dart';
-export 'cell_bloc/number_cell_bloc.dart';
-export 'cell_bloc/selection_cell_bloc.dart';
-export 'cell_bloc/date_cell_bloc.dart';
-export 'cell_bloc/checkbox_cell_bloc.dart';
-export 'cell_bloc/cell_service.dart';
+export 'cell/text_cell_bloc.dart';
+export 'cell/number_cell_bloc.dart';
+export 'cell/selection_cell_bloc.dart';
+export 'cell/date_cell_bloc.dart';
+export 'cell/checkbox_cell_bloc.dart';
+export 'cell/cell_service.dart';
 
 // Setting
 export 'setting/setting_bloc.dart';

+ 2 - 2
frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart

@@ -12,7 +12,7 @@ import 'package:dartz/dartz.dart';
 
 part 'row_bloc.freezed.dart';
 
-typedef CellDataMap = LinkedHashMap<String, CellData>;
+typedef CellDataMap = LinkedHashMap<String, GridCellIdentifier>;
 
 class RowBloc extends Bloc<RowEvent, RowState> {
   final RowService _rowService;
@@ -111,7 +111,7 @@ class RowBloc extends Bloc<RowEvent, RowState> {
     var map = CellDataMap.new();
     for (final field in fields) {
       if (field.visibility) {
-        map[field.id] = CellData(
+        map[field.id] = GridCellIdentifier(
           rowId: row.id,
           gridId: _rowService.gridId,
           cell: row.cellByFieldId[field.id],

+ 3 - 3
frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart

@@ -84,10 +84,10 @@ class RowsNotifier extends ChangeNotifier {
 class GridRowCache {
   final String gridId;
   late GridRowListener _rowsListener;
+  final RowsNotifier _rowNotifier = RowsNotifier();
   final HashMap<String, Row> _rowDataMap = HashMap();
 
   UnmodifiableListView<Field> _fields = UnmodifiableListView([]);
-  final RowsNotifier _rowNotifier = RowsNotifier();
 
   GridRowCache({required this.gridId}) {
     _rowsListener = GridRowListener(gridId: gridId);
@@ -216,8 +216,8 @@ class GridRowCache {
 }
 
 @freezed
-class CellData with _$CellData {
-  const factory CellData({
+class GridCellIdentifier with _$GridCellIdentifier {
+  const factory GridCellIdentifier({
     required String gridId,
     required String rowId,
     required Field field,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart

@@ -7,7 +7,7 @@ import 'number_cell.dart';
 import 'selection_cell/selection_cell.dart';
 import 'text_cell.dart';
 
-Widget buildGridCell(CellData cellData) {
+Widget buildGridCell(GridCellIdentifier cellData) {
   final key = ValueKey(cellData.field.id + cellData.rowId);
   switch (cellData.field.fieldType) {
     case FieldType.Checkbox:

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/checkbox_cell.dart

@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
 class CheckboxCell extends StatefulWidget {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const CheckboxCell({
     required this.cellData,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/date_cell.dart

@@ -9,7 +9,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
 import 'package:table_calendar/table_calendar.dart';
 
 class DateCell extends GridCell {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const DateCell({
     required this.cellData,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/number_cell.dart

@@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
 class NumberCell extends GridCell {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const NumberCell({
     required this.cellData,

+ 2 - 2
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart

@@ -8,7 +8,7 @@ import 'extension.dart';
 import 'selection_editor.dart';
 
 class SingleSelectCell extends GridCell {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const SingleSelectCell({
     required this.cellData,
@@ -64,7 +64,7 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
 
 //----------------------------------------------------------------
 class MultiSelectCell extends GridCell {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const MultiSelectCell({
     required this.cellData,

+ 3 - 3
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_editor.dart

@@ -1,5 +1,5 @@
 import 'dart:collection';
-import 'package:app_flowy/workspace/application/grid/cell_bloc/selection_editor_bloc.dart';
+import 'package:app_flowy/workspace/application/grid/cell/selection_editor_bloc.dart';
 import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
 import 'package:app_flowy/workspace/presentation/plugins/grid/src/layout/sizes.dart';
 import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/header/type_option/edit_option_pannel.dart';
@@ -25,7 +25,7 @@ import 'text_field.dart';
 const double _editorPannelWidth = 300;
 
 class SelectOptionCellEditor extends StatelessWidget with FlowyOverlayDelegate {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
   final List<SelectOption> options;
   final List<SelectOption> selectedOptions;
   final VoidCallback onDismissed;
@@ -66,7 +66,7 @@ class SelectOptionCellEditor extends StatelessWidget with FlowyOverlayDelegate {
 
   static void show(
     BuildContext context,
-    CellData cellData,
+    GridCellIdentifier cellData,
     List<SelectOption> options,
     List<SelectOption> selectedOptions,
     VoidCallback onDismissed,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/text_cell.dart

@@ -6,7 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
 import 'cell_container.dart';
 
 class GridTextCell extends GridCell {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
   const GridTextCell({
     required this.cellData,
     Key? key,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/cell/number_cell.dart

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
 class NumberCell extends StatefulWidget {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const NumberCell({
     required this.cellData,

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/number_cell.dart

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
 class NumberCell extends StatefulWidget {
-  final CellData cellData;
+  final GridCellIdentifier cellData;
 
   const NumberCell({
     required this.cellData,