From 375ff5ed6d5f1f90530155fba7439791babf383f Mon Sep 17 00:00:00 2001 From: Richard Shiue <71320345+richardshiue@users.noreply.github.com> Date: Sun, 24 Sep 2023 20:24:38 +0800 Subject: [PATCH] refactor: use same bloc in grid and cards (#3511) --- .../presentation/calendar_event_card.dart | 11 +-- .../card/bloc/checkbox_card_cell_bloc.dart | 77 --------------- .../card/bloc/date_card_cell_bloc.dart | 99 ------------------- .../card/bloc/number_card_cell_bloc.dart | 68 ------------- .../bloc/select_option_card_cell_bloc.dart | 78 --------------- .../card/bloc/text_card_cell_bloc.dart | 79 --------------- .../card/bloc/timestamp_card_cell_bloc.dart | 80 --------------- .../widgets/card/bloc/url_card_cell_bloc.dart | 80 --------------- .../widgets/card/board_number_cell.dart | 68 ------------- .../card/cells/checkbox_card_cell.dart | 19 ++-- .../card/cells/checklist_card_cell.dart | 10 +- .../widgets/card/cells/date_card_cell.dart | 14 +-- .../widgets/card/cells/number_card_cell.dart | 23 ++--- .../card/cells/select_option_card_cell.dart | 15 +-- .../widgets/card/cells/text_card_cell.dart | 24 ++--- .../card/cells/timestamp_card_cell.dart | 14 +-- .../widgets/card/cells/url_card_cell.dart | 14 +-- .../cells/checkbox_cell/checkbox_cell.dart | 13 +-- .../checkbox_cell/checkbox_cell_bloc.dart | 9 +- .../cells/checklist_cell/checklist_cell.dart | 6 +- .../checklist_cell/checklist_cell_bloc.dart | 5 +- .../row/cells/text_cell/text_cell_bloc.dart | 6 ++ 22 files changed, 91 insertions(+), 721 deletions(-) delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/checkbox_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/date_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/number_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/select_option_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/text_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/timestamp_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/url_card_cell_bloc.dart delete mode 100644 frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/board_number_cell.dart diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_event_card.dart b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_event_card.dart index 6df4d67f25..80b26e9b2e 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_event_card.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_event_card.dart @@ -1,12 +1,12 @@ import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/database_view/application/row/row_cache.dart'; -import 'package:appflowy/plugins/database_view/widgets/card/bloc/text_card_cell_bloc.dart'; import 'package:appflowy/plugins/database_view/widgets/card/card.dart'; import 'package:appflowy/plugins/database_view/widgets/card/card_cell_builder.dart'; import 'package:appflowy/plugins/database_view/widgets/card/cells/card_cell.dart'; import 'package:appflowy/plugins/database_view/widgets/card/cells/number_card_cell.dart'; import 'package:appflowy/plugins/database_view/widgets/card/cells/url_card_cell.dart'; import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -179,13 +179,10 @@ class _EventCardState extends State { ) { final renderHook = RowCardRenderHook(); renderHook.addTextCellHook((cellData, eventData, _) { - return BlocBuilder( + return BlocBuilder( builder: (context, state) { - final isTitle = context - .read() - .cellController - .fieldInfo - .isPrimary; + final isTitle = + context.read().cellController.fieldInfo.isPrimary; final text = isTitle && cellData.isEmpty ? LocaleKeys.grid_row_titlePlaceholder.tr() : cellData; diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/checkbox_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/checkbox_card_cell_bloc.dart deleted file mode 100644 index 3cf0ff329d..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/checkbox_card_cell_bloc.dart +++ /dev/null @@ -1,77 +0,0 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; -import '../../../application/cell/cell_controller_builder.dart'; - -part 'checkbox_card_cell_bloc.freezed.dart'; - -class CheckboxCardCellBloc - extends Bloc { - final CheckboxCellController cellController; - void Function()? _onCellChangedFn; - CheckboxCardCellBloc({ - required this.cellController, - }) : super(CheckboxCardCellState.initial(cellController)) { - on( - (event, emit) async { - await event.when( - initial: () async { - _startListening(); - }, - didReceiveCellUpdate: (cellData) { - emit(state.copyWith(isSelected: _isSelected(cellData))); - }, - select: () async { - cellController.saveCellData(!state.isSelected ? "Yes" : "No"); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((cellContent) { - if (!isClosed) { - add(CheckboxCardCellEvent.didReceiveCellUpdate(cellContent ?? "")); - } - }), - ); - } -} - -@freezed -class CheckboxCardCellEvent with _$CheckboxCardCellEvent { - const factory CheckboxCardCellEvent.initial() = _InitialCell; - const factory CheckboxCardCellEvent.select() = _Selected; - const factory CheckboxCardCellEvent.didReceiveCellUpdate(String cellContent) = - _DidReceiveCellUpdate; -} - -@freezed -class CheckboxCardCellState with _$CheckboxCardCellState { - const factory CheckboxCardCellState({ - required bool isSelected, - }) = _CheckboxCellState; - - factory CheckboxCardCellState.initial(TextCellController context) { - return CheckboxCardCellState( - isSelected: _isSelected(context.getCellData()), - ); - } -} - -bool _isSelected(String? cellData) { - // The backend use "Yes" and "No" to represent the checkbox cell data. - return cellData == "Yes"; -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/date_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/date_card_cell_bloc.dart deleted file mode 100644 index d9f451ce8b..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/date_card_cell_bloc.dart +++ /dev/null @@ -1,99 +0,0 @@ -import 'package:appflowy/plugins/database_view/application/field/field_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; - -import '../../../application/cell/cell_controller_builder.dart'; -part 'date_card_cell_bloc.freezed.dart'; - -class DateCardCellBloc extends Bloc { - final DateCellController cellController; - void Function()? _onCellChangedFn; - - DateCardCellBloc({required this.cellController}) - : super(DateCardCellState.initial(cellController)) { - on( - (event, emit) async { - event.when( - initial: () => _startListening(), - didReceiveCellUpdate: (DateCellDataPB? cellData) { - emit( - state.copyWith( - data: cellData, - dateStr: _dateStrFromCellData(cellData), - ), - ); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((data) { - if (!isClosed) { - add(DateCardCellEvent.didReceiveCellUpdate(data)); - } - }), - ); - } -} - -@freezed -class DateCardCellEvent with _$DateCardCellEvent { - const factory DateCardCellEvent.initial() = _InitialCell; - const factory DateCardCellEvent.didReceiveCellUpdate(DateCellDataPB? data) = - _DidReceiveCellUpdate; -} - -@freezed -class DateCardCellState with _$DateCardCellState { - const factory DateCardCellState({ - required DateCellDataPB? data, - required String dateStr, - required FieldInfo fieldInfo, - }) = _DateCardCellState; - - factory DateCardCellState.initial(DateCellController context) { - final cellData = context.getCellData(); - - return DateCardCellState( - fieldInfo: context.fieldInfo, - data: cellData, - dateStr: _dateStrFromCellData(cellData), - ); - } -} - -String _dateStrFromCellData(DateCellDataPB? cellData) { - String dateStr = ""; - if (cellData != null) { - if (cellData.isRange) { - if (cellData.includeTime) { - dateStr = - "${cellData.date} ${cellData.time} → ${cellData.endDate} ${cellData.endTime}"; - } else { - dateStr = "${cellData.date} → ${cellData.endDate}"; - } - } else { - if (cellData.includeTime) { - dateStr = "${cellData.date} ${cellData.time}"; - } else { - dateStr = cellData.date; - } - } - } - return dateStr; -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/number_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/number_card_cell_bloc.dart deleted file mode 100644 index 54c6d242d1..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/number_card_cell_bloc.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; - -import '../../../application/cell/cell_controller_builder.dart'; - -part 'number_card_cell_bloc.freezed.dart'; - -class NumberCardCellBloc - extends Bloc { - final NumberCellController cellController; - void Function()? _onCellChangedFn; - NumberCardCellBloc({ - required this.cellController, - }) : super(NumberCardCellState.initial(cellController)) { - on( - (event, emit) async { - await event.when( - initial: () async { - _startListening(); - }, - didReceiveCellUpdate: (content) { - emit(state.copyWith(content: content)); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((cellContent) { - if (!isClosed) { - add(NumberCardCellEvent.didReceiveCellUpdate(cellContent ?? "")); - } - }), - ); - } -} - -@freezed -class NumberCardCellEvent with _$NumberCardCellEvent { - const factory NumberCardCellEvent.initial() = _InitialCell; - const factory NumberCardCellEvent.didReceiveCellUpdate(String cellContent) = - _DidReceiveCellUpdate; -} - -@freezed -class NumberCardCellState with _$NumberCardCellState { - const factory NumberCardCellState({ - required String content, - }) = _NumberCardCellState; - - factory NumberCardCellState.initial(TextCellController context) => - NumberCardCellState( - content: context.getCellData() ?? "", - ); -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/select_option_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/select_option_card_cell_bloc.dart deleted file mode 100644 index 08b72aa430..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/select_option_card_cell_bloc.dart +++ /dev/null @@ -1,78 +0,0 @@ -import 'dart:async'; -import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'select_option_card_cell_bloc.freezed.dart'; - -class SelectOptionCardCellBloc - extends Bloc { - final SelectOptionCellController cellController; - void Function()? _onCellChangedFn; - - SelectOptionCardCellBloc({ - required this.cellController, - }) : super(SelectOptionCardCellState.initial(cellController)) { - on( - (event, emit) async { - await event.when( - initial: () async { - _startListening(); - }, - didReceiveOptions: (List selectedOptions) { - emit(state.copyWith(selectedOptions: selectedOptions)); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((selectOptionContext) { - if (!isClosed) { - add( - SelectOptionCardCellEvent.didReceiveOptions( - selectOptionContext?.selectOptions ?? [], - ), - ); - } - }), - ); - } -} - -@freezed -class SelectOptionCardCellEvent with _$SelectOptionCardCellEvent { - const factory SelectOptionCardCellEvent.initial() = _InitialCell; - const factory SelectOptionCardCellEvent.didReceiveOptions( - List selectedOptions, - ) = _DidReceiveOptions; -} - -@freezed -class SelectOptionCardCellState with _$SelectOptionCardCellState { - const factory SelectOptionCardCellState({ - required List selectedOptions, - }) = _SelectOptionCardCellState; - - factory SelectOptionCardCellState.initial( - SelectOptionCellController context, - ) { - final data = context.getCellData(); - return SelectOptionCardCellState( - selectedOptions: data?.selectOptions ?? [], - ); - } -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/text_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/text_card_cell_bloc.dart deleted file mode 100644 index 34266943b5..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/text_card_cell_bloc.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; - -part 'text_card_cell_bloc.freezed.dart'; - -class TextCardCellBloc extends Bloc { - final TextCellController cellController; - void Function()? _onCellChangedFn; - TextCardCellBloc({ - required this.cellController, - }) : super(TextCardCellState.initial(cellController)) { - on( - (event, emit) async { - await event.when( - initial: () async { - _startListening(); - }, - didReceiveCellUpdate: (content) { - emit(state.copyWith(content: content)); - }, - updateText: (text) { - if (text != state.content) { - cellController.saveCellData(text); - emit(state.copyWith(content: text)); - } - }, - enableEdit: (bool enabled) { - emit(state.copyWith(enableEdit: enabled)); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((cellContent) { - if (!isClosed) { - add(TextCardCellEvent.didReceiveCellUpdate(cellContent ?? "")); - } - }), - ); - } -} - -@freezed -class TextCardCellEvent with _$TextCardCellEvent { - const factory TextCardCellEvent.initial() = _InitialCell; - const factory TextCardCellEvent.updateText(String text) = _UpdateContent; - const factory TextCardCellEvent.enableEdit(bool enabled) = _EnableEdit; - const factory TextCardCellEvent.didReceiveCellUpdate(String cellContent) = - _DidReceiveCellUpdate; -} - -@freezed -class TextCardCellState with _$TextCardCellState { - const factory TextCardCellState({ - required String content, - required bool enableEdit, - }) = _TextCardCellState; - - factory TextCardCellState.initial(TextCellController context) => - TextCardCellState( - content: context.getCellData() ?? "", - enableEdit: false, - ); -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/timestamp_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/timestamp_card_cell_bloc.dart deleted file mode 100644 index 4cb5ed7467..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/timestamp_card_cell_bloc.dart +++ /dev/null @@ -1,80 +0,0 @@ -import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:appflowy/plugins/database_view/application/field/field_info.dart'; -import 'package:appflowy_backend/protobuf/flowy-database2/timestamp_entities.pb.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; - -part 'timestamp_card_cell_bloc.freezed.dart'; - -class TimestampCardCellBloc - extends Bloc { - final TimestampCellController cellController; - void Function()? _onCellChangedFn; - - TimestampCardCellBloc({required this.cellController}) - : super(TimestampCardCellState.initial(cellController)) { - on( - (event, emit) async { - event.when( - initial: () => _startListening(), - didReceiveCellUpdate: (TimestampCellDataPB? cellData) { - emit( - state.copyWith( - data: cellData, - dateStr: cellData?.dateTime ?? "", - ), - ); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((data) { - if (!isClosed) { - add(TimestampCardCellEvent.didReceiveCellUpdate(data)); - } - }), - ); - } -} - -@freezed -class TimestampCardCellEvent with _$TimestampCardCellEvent { - const factory TimestampCardCellEvent.initial() = _InitialCell; - const factory TimestampCardCellEvent.didReceiveCellUpdate( - TimestampCellDataPB? data, - ) = _DidReceiveCellUpdate; -} - -@freezed -class TimestampCardCellState with _$TimestampCardCellState { - const factory TimestampCardCellState({ - required TimestampCellDataPB? data, - required String dateStr, - required FieldInfo fieldInfo, - }) = _TimestampCardCellState; - - factory TimestampCardCellState.initial(TimestampCellController context) { - final cellData = context.getCellData(); - - return TimestampCardCellState( - fieldInfo: context.fieldInfo, - data: cellData, - dateStr: cellData?.dateTime ?? "", - ); - } -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/url_card_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/url_card_cell_bloc.dart deleted file mode 100644 index 6b3b084d1b..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/bloc/url_card_cell_bloc.dart +++ /dev/null @@ -1,80 +0,0 @@ -import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:appflowy_backend/protobuf/flowy-database2/url_entities.pb.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'dart:async'; - -part 'url_card_cell_bloc.freezed.dart'; - -class URLCardCellBloc extends Bloc { - final URLCellController cellController; - void Function()? _onCellChangedFn; - URLCardCellBloc({ - required this.cellController, - }) : super(URLCardCellState.initial(cellController)) { - on( - (event, emit) async { - event.when( - initial: () { - _startListening(); - }, - didReceiveCellUpdate: (cellData) { - emit( - state.copyWith( - content: cellData?.content ?? "", - url: cellData?.url ?? "", - ), - ); - }, - updateURL: (String url) { - cellController.saveCellData(url, deduplicate: true); - }, - ); - }, - ); - } - - @override - Future close() async { - if (_onCellChangedFn != null) { - cellController.removeListener(_onCellChangedFn!); - _onCellChangedFn = null; - } - await cellController.dispose(); - return super.close(); - } - - void _startListening() { - _onCellChangedFn = cellController.startListening( - onCellChanged: ((cellData) { - if (!isClosed) { - add(URLCardCellEvent.didReceiveCellUpdate(cellData)); - } - }), - ); - } -} - -@freezed -class URLCardCellEvent with _$URLCardCellEvent { - const factory URLCardCellEvent.initial() = _InitialCell; - const factory URLCardCellEvent.updateURL(String url) = _UpdateURL; - const factory URLCardCellEvent.didReceiveCellUpdate(URLCellDataPB? cell) = - _DidReceiveCellUpdate; -} - -@freezed -class URLCardCellState with _$URLCardCellState { - const factory URLCardCellState({ - required String content, - required String url, - }) = _URLCardCellState; - - factory URLCardCellState.initial(URLCellController context) { - final cellData = context.getCellData(); - return URLCardCellState( - content: cellData?.content ?? "", - url: cellData?.url ?? "", - ); - } -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/board_number_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/board_number_cell.dart deleted file mode 100644 index 78a19bacdf..0000000000 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/board_number_cell.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:flowy_infra_ui/style_widget/text.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'bloc/number_card_cell_bloc.dart'; -import 'define.dart'; - -class BoardNumberCell extends StatefulWidget { - final String groupId; - final CellControllerBuilder cellControllerBuilder; - - const BoardNumberCell({ - required this.groupId, - required this.cellControllerBuilder, - Key? key, - }) : super(key: key); - - @override - State createState() => _NumberCardCellState(); -} - -class _NumberCardCellState extends State { - late NumberCardCellBloc _cellBloc; - - @override - void initState() { - final cellController = - widget.cellControllerBuilder.build() as NumberCellController; - - _cellBloc = NumberCardCellBloc(cellController: cellController) - ..add(const NumberCardCellEvent.initial()); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return BlocProvider.value( - value: _cellBloc, - child: BlocBuilder( - buildWhen: (previous, current) => previous.content != current.content, - builder: (context, state) { - if (state.content.isEmpty) { - return const SizedBox(); - } else { - return Align( - alignment: Alignment.centerLeft, - child: Padding( - padding: EdgeInsets.symmetric( - vertical: CardSizes.cardCellVPadding, - ), - child: FlowyText.medium( - state.content, - fontSize: 14, - ), - ), - ); - } - }, - ), - ); - } - - @override - Future dispose() async { - _cellBloc.close(); - super.dispose(); - } -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart index 7e5f464610..f5bf4e63b4 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart @@ -1,11 +1,10 @@ import 'package:appflowy/generated/flowy_svgs.g.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; - +import 'package:appflowy/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell_bloc.dart'; import 'package:flowy_infra_ui/style_widget/icon_button.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import '../bloc/checkbox_card_cell_bloc.dart'; import 'card_cell.dart'; class CheckboxCardCell extends CardCell { @@ -17,18 +16,18 @@ class CheckboxCardCell extends CardCell { }) : super(key: key); @override - State createState() => _CheckboxCardCellState(); + State createState() => _CheckboxCellState(); } -class _CheckboxCardCellState extends State { - late CheckboxCardCellBloc _cellBloc; +class _CheckboxCellState extends State { + late CheckboxCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as CheckboxCellController; - _cellBloc = CheckboxCardCellBloc(cellController: cellController); - _cellBloc.add(const CheckboxCardCellEvent.initial()); + _cellBloc = CheckboxCellBloc(cellController: cellController); + _cellBloc.add(const CheckboxCellEvent.initial()); super.initState(); } @@ -36,7 +35,7 @@ class _CheckboxCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) => previous.isSelected != current.isSelected, builder: (context, state) { @@ -55,8 +54,8 @@ class _CheckboxCardCellState extends State { icon: icon, width: 20, onPressed: () => context - .read() - .add(const CheckboxCardCellEvent.select()), + .read() + .add(const CheckboxCellEvent.select()), ), ), ); diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checklist_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checklist_card_cell.dart index 4d1c538b05..33d607a24d 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checklist_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checklist_card_cell.dart @@ -12,17 +12,17 @@ class ChecklistCardCell extends CardCell { : super(key: key); @override - State createState() => _ChecklistCardCellState(); + State createState() => _ChecklistCellState(); } -class _ChecklistCardCellState extends State { - late ChecklistCardCellBloc _cellBloc; +class _ChecklistCellState extends State { + late ChecklistCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as ChecklistCellController; - _cellBloc = ChecklistCardCellBloc(cellController: cellController); + _cellBloc = ChecklistCellBloc(cellController: cellController); _cellBloc.add(const ChecklistCellEvent.initial()); super.initState(); } @@ -31,7 +31,7 @@ class _ChecklistCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( builder: (context, state) { if (state.allOptions.isEmpty) { return const SizedBox.shrink(); diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/date_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/date_card_cell.dart index ca16ffe303..130113e400 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/date_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/date_card_cell.dart @@ -1,9 +1,9 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/date_cell/date_cell_bloc.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import '../bloc/date_card_cell_bloc.dart'; import '../define.dart'; import 'card_cell.dart'; @@ -18,19 +18,19 @@ class DateCardCell extends CardCell { }) : super(key: key); @override - State createState() => _DateCardCellState(); + State createState() => _DateCellState(); } -class _DateCardCellState extends State { - late DateCardCellBloc _cellBloc; +class _DateCellState extends State { + late DateCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as DateCellController; - _cellBloc = DateCardCellBloc(cellController: cellController) - ..add(const DateCardCellEvent.initial()); + _cellBloc = DateCellBloc(cellController: cellController) + ..add(const DateCellEvent.initial()); super.initState(); } @@ -38,7 +38,7 @@ class _DateCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) => previous.dateStr != current.dateStr, builder: (context, state) { if (state.dateStr.isEmpty) { diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/number_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/number_card_cell.dart index c2366a5d8e..547fdc4086 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/number_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/number_card_cell.dart @@ -1,9 +1,9 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/number_cell/number_cell_bloc.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import '../bloc/number_card_cell_bloc.dart'; import '../define.dart'; import 'card_cell.dart'; @@ -27,19 +27,19 @@ class NumberCardCell }) : super(key: key, style: style, cardData: cardData); @override - State createState() => _NumberCardCellState(); + State createState() => _NumberCellState(); } -class _NumberCardCellState extends State { - late NumberCardCellBloc _cellBloc; +class _NumberCellState extends State { + late NumberCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as NumberCellController; - _cellBloc = NumberCardCellBloc(cellController: cellController) - ..add(const NumberCardCellEvent.initial()); + _cellBloc = NumberCellBloc(cellController: cellController) + ..add(const NumberCellEvent.initial()); super.initState(); } @@ -47,14 +47,15 @@ class _NumberCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( - buildWhen: (previous, current) => previous.content != current.content, + child: BlocBuilder( + buildWhen: (previous, current) => + previous.cellContent != current.cellContent, builder: (context, state) { - if (state.content.isEmpty) { + if (state.cellContent.isEmpty) { return const SizedBox(); } else { final Widget? custom = widget.renderHook?.call( - state.content, + state.cellContent, widget.cardData, context, ); @@ -69,7 +70,7 @@ class _NumberCardCellState extends State { vertical: CardSizes.cardCellVPadding, ), child: FlowyText.medium( - state.content, + state.cellContent, fontSize: widget.style?.fontSize ?? 14, ), ), diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/select_option_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/select_option_card_cell.dart index 13409e8581..7d9bfded9f 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/select_option_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/select_option_card_cell.dart @@ -1,12 +1,13 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.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_cell_bloc.dart'; import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.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 '../bloc/select_option_card_cell_bloc.dart'; + import 'card_cell.dart'; class SelectOptionCardCellStyle extends CardCellStyle {} @@ -29,11 +30,11 @@ class SelectOptionCardCell }) : super(key: key, cardData: cardData); @override - State createState() => _SelectOptionCardCellState(); + State createState() => _SelectOptionCellState(); } -class _SelectOptionCardCellState extends State { - late SelectOptionCardCellBloc _cellBloc; +class _SelectOptionCellState extends State { + late SelectOptionCellBloc _cellBloc; late PopoverController _popover; @override @@ -41,8 +42,8 @@ class _SelectOptionCardCellState extends State { _popover = PopoverController(); final cellController = widget.cellControllerBuilder.build() as SelectOptionCellController; - _cellBloc = SelectOptionCardCellBloc(cellController: cellController) - ..add(const SelectOptionCardCellEvent.initial()); + _cellBloc = SelectOptionCellBloc(cellController: cellController) + ..add(const SelectOptionCellEvent.initial()); super.initState(); } @@ -50,7 +51,7 @@ class _SelectOptionCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) { return previous.selectedOptions != current.selectedOptions; }, diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/text_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/text_card_cell.dart index 25cb563f5c..f2f99be928 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/text_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/text_card_cell.dart @@ -1,9 +1,9 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../row/cell_builder.dart'; -import '../bloc/text_card_cell_bloc.dart'; import '../define.dart'; import 'card_cell.dart'; @@ -30,11 +30,11 @@ class TextCardCell }) : super(key: key, style: style, cardData: cardData); @override - State createState() => _TextCardCellState(); + State createState() => _TextCellState(); } -class _TextCardCellState extends State { - late TextCardCellBloc _cellBloc; +class _TextCellState extends State { + late TextCellBloc _cellBloc; late TextEditingController _controller; bool focusWhenInit = false; final focusNode = SingleListenerFocusNode(); @@ -43,8 +43,8 @@ class _TextCardCellState extends State { void initState() { final cellController = widget.cellControllerBuilder.build() as TextCellController; - _cellBloc = TextCardCellBloc(cellController: cellController) - ..add(const TextCardCellEvent.initial()); + _cellBloc = TextCellBloc(cellController: cellController) + ..add(const TextCellEvent.initial()); _controller = TextEditingController(text: _cellBloc.state.content); focusWhenInit = widget.editableNotifier?.isCellEditing.value ?? false; if (focusWhenInit) { @@ -58,7 +58,7 @@ class _TextCardCellState extends State { if (!focusNode.hasFocus) { focusWhenInit = false; widget.editableNotifier?.isCellEditing.value = false; - _cellBloc.add(const TextCardCellEvent.enableEdit(false)); + _cellBloc.add(const TextCellEvent.enableEdit(false)); } }); _bindEditableNotifier(); @@ -75,7 +75,7 @@ class _TextCardCellState extends State { focusNode.requestFocus(); }); } - _cellBloc.add(TextCardCellEvent.enableEdit(isEditing)); + _cellBloc.add(TextCellEvent.enableEdit(isEditing)); }); } @@ -89,13 +89,13 @@ class _TextCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocListener( + child: BlocListener( listener: (context, state) { if (_controller.text != state.content) { _controller.text = state.content; } }, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) { if (previous.content != current.content && _controller.text == current.content && @@ -137,7 +137,7 @@ class _TextCardCellState extends State { } Future focusChanged() async { - _cellBloc.add(TextCardCellEvent.updateText(_controller.text)); + _cellBloc.add(TextCellEvent.updateText(_controller.text)); } @override @@ -156,7 +156,7 @@ class _TextCardCellState extends State { } } - Widget _buildText(TextCardCellState state) { + Widget _buildText(TextCellState state) { return Padding( padding: EdgeInsets.symmetric( vertical: CardSizes.cardCellVPadding, diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/timestamp_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/timestamp_card_cell.dart index b92245ece1..1155940dee 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/timestamp_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/timestamp_card_cell.dart @@ -1,5 +1,5 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:appflowy/plugins/database_view/widgets/card/bloc/timestamp_card_cell_bloc.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/timestamp_cell/timestamp_cell_bloc.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -18,19 +18,19 @@ class TimestampCardCell extends CardCell { }) : super(key: key); @override - State createState() => _TimestampCardCellState(); + State createState() => _TimestampCellState(); } -class _TimestampCardCellState extends State { - late TimestampCardCellBloc _cellBloc; +class _TimestampCellState extends State { + late TimestampCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as TimestampCellController; - _cellBloc = TimestampCardCellBloc(cellController: cellController) - ..add(const TimestampCardCellEvent.initial()); + _cellBloc = TimestampCellBloc(cellController: cellController) + ..add(const TimestampCellEvent.initial()); super.initState(); } @@ -38,7 +38,7 @@ class _TimestampCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) => previous.dateStr != current.dateStr, builder: (context, state) { if (state.dateStr.isEmpty) { diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/url_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/url_card_cell.dart index 70b7034e22..84eec23367 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/url_card_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/url_card_cell.dart @@ -1,9 +1,9 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cells/url_cell/url_cell_bloc.dart'; import 'package:flowy_infra/size.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import '../bloc/url_card_cell_bloc.dart'; import '../define.dart'; import 'card_cell.dart'; @@ -24,18 +24,18 @@ class URLCardCell }) : super(key: key, style: style); @override - State createState() => _URLCardCellState(); + State createState() => _URLCellState(); } -class _URLCardCellState extends State { - late URLCardCellBloc _cellBloc; +class _URLCellState extends State { + late URLCellBloc _cellBloc; @override void initState() { final cellController = widget.cellControllerBuilder.build() as URLCellController; - _cellBloc = URLCardCellBloc(cellController: cellController); - _cellBloc.add(const URLCardCellEvent.initial()); + _cellBloc = URLCellBloc(cellController: cellController); + _cellBloc.add(const URLCellEvent.initial()); super.initState(); } @@ -43,7 +43,7 @@ class _URLCardCellState extends State { Widget build(BuildContext context) { return BlocProvider.value( value: _cellBloc, - child: BlocBuilder( + child: BlocBuilder( buildWhen: (previous, current) => previous.content != current.content, builder: (context, state) { if (state.content.isEmpty) { diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart index 86dce6ca54..dca3b7a291 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart @@ -1,13 +1,12 @@ import 'package:appflowy/generated/flowy_svgs.g.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/grid/presentation/layout/sizes.dart'; +import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart'; import 'package:flowy_infra_ui/style_widget/icon_button.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; + import 'checkbox_cell_bloc.dart'; -import '../../../../grid/presentation/layout/sizes.dart'; -import '../../cell_builder.dart'; class GridCheckboxCellStyle extends GridCellStyle { EdgeInsets? cellPadding; @@ -44,10 +43,8 @@ class _CheckboxCellState extends GridCellState { void initState() { final cellController = widget.cellControllerBuilder.build() as CheckboxCellController; - _cellBloc = CheckboxCellBloc( - service: CellBackendService(), - cellController: cellController, - )..add(const CheckboxCellEvent.initial()); + _cellBloc = CheckboxCellBloc(cellController: cellController) + ..add(const CheckboxCellEvent.initial()); super.initState(); } diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell_bloc.dart index e0a2ac58db..ffcd87cc40 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell_bloc.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell_bloc.dart @@ -1,5 +1,4 @@ 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:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; @@ -11,7 +10,6 @@ class CheckboxCellBloc extends Bloc { void Function()? _onCellChangedFn; CheckboxCellBloc({ - required CellBackendService service, required this.cellController, }) : super(CheckboxCellState.initial(cellController)) { on( @@ -20,12 +18,12 @@ class CheckboxCellBloc extends Bloc { initial: () { _startListening(); }, - select: () async { - cellController.saveCellData(!state.isSelected ? "Yes" : "No"); - }, didReceiveCellUpdate: (cellData) { emit(state.copyWith(isSelected: _isSelected(cellData))); }, + select: () async { + cellController.saveCellData(!state.isSelected ? "Yes" : "No"); + }, ); }, ); @@ -73,5 +71,6 @@ class CheckboxCellState with _$CheckboxCellState { } bool _isSelected(String? cellData) { + // The backend use "Yes" and "No" to represent the checkbox cell data. return cellData == "Yes"; } diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell.dart index d40debbb83..8ede7c50f9 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell.dart @@ -36,7 +36,7 @@ class GridChecklistCell extends GridCellWidget { } class GridChecklistCellState extends GridCellState { - late ChecklistCardCellBloc _cellBloc; + late ChecklistCellBloc _cellBloc; late final PopoverController _popover; @override @@ -44,7 +44,7 @@ class GridChecklistCellState extends GridCellState { _popover = PopoverController(); final cellController = widget.cellControllerBuilder.build() as ChecklistCellController; - _cellBloc = ChecklistCardCellBloc(cellController: cellController); + _cellBloc = ChecklistCellBloc(cellController: cellController); _cellBloc.add(const ChecklistCellEvent.initial()); super.initState(); } @@ -74,7 +74,7 @@ class GridChecklistCellState extends GridCellState { child: Padding( padding: widget.cellStyle?.cellPadding ?? GridSize.cellContentInsets, - child: BlocBuilder( + child: BlocBuilder( builder: (context, state) { if (state.allOptions.isEmpty) { return FlowyText.medium( diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_bloc.dart index 7d5b9a865a..705557f52c 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_bloc.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_bloc.dart @@ -8,12 +8,11 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; part 'checklist_cell_bloc.freezed.dart'; -class ChecklistCardCellBloc - extends Bloc { +class ChecklistCellBloc extends Bloc { final ChecklistCellController cellController; final ChecklistCellBackendService _checklistCellSvc; void Function()? _onCellChangedFn; - ChecklistCardCellBloc({ + ChecklistCellBloc({ required this.cellController, }) : _checklistCellSvc = ChecklistCellBackendService( viewId: cellController.viewId, diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart index 987232a1c4..780be0c081 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart @@ -29,6 +29,9 @@ class TextCellBloc extends Bloc { didUpdateEmoji: (String emoji) { emit(state.copyWith(emoji: emoji)); }, + enableEdit: (bool enabled) { + emit(state.copyWith(enableEdit: enabled)); + }, ); }, ); @@ -66,6 +69,7 @@ class TextCellEvent with _$TextCellEvent { const factory TextCellEvent.didReceiveCellUpdate(String cellContent) = _DidReceiveCellUpdate; const factory TextCellEvent.updateText(String text) = _UpdateText; + const factory TextCellEvent.enableEdit(bool enabled) = _EnableEdit; const factory TextCellEvent.didUpdateEmoji(String emoji) = _UpdateEmoji; } @@ -74,10 +78,12 @@ class TextCellState with _$TextCellState { const factory TextCellState({ required String content, required String emoji, + required bool enableEdit, }) = _TextCellState; factory TextCellState.initial(TextCellController context) => TextCellState( content: context.getCellData() ?? "", emoji: context.emoji ?? "", + enableEdit: false, ); }