|
@@ -4,34 +4,40 @@ import 'dart:collection';
|
|
|
|
|
|
import 'package:app_flowy/generated/locale_keys.g.dart';
|
|
import 'package:app_flowy/generated/locale_keys.g.dart';
|
|
import 'package:app_flowy/plugins/board/application/card/card_data_controller.dart';
|
|
import 'package:app_flowy/plugins/board/application/card/card_data_controller.dart';
|
|
-import 'package:app_flowy/plugins/grid/application/row/row_cache.dart';
|
|
|
|
import 'package:app_flowy/plugins/grid/application/field/field_controller.dart';
|
|
import 'package:app_flowy/plugins/grid/application/field/field_controller.dart';
|
|
|
|
+import 'package:app_flowy/plugins/grid/application/row/row_cache.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/presentation/widgets/cell/cell_builder.dart';
|
|
import 'package:app_flowy/plugins/grid/presentation/widgets/cell/cell_builder.dart';
|
|
import 'package:app_flowy/plugins/grid/presentation/widgets/row/row_detail.dart';
|
|
import 'package:app_flowy/plugins/grid/presentation/widgets/row/row_detail.dart';
|
|
|
|
+import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|
|
|
+import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart';
|
|
|
|
+import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart';
|
|
import 'package:appflowy_board/appflowy_board.dart';
|
|
import 'package:appflowy_board/appflowy_board.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_ui/style_widget/text.dart';
|
|
|
|
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
|
|
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
|
|
|
|
+import 'package:flowy_infra_ui/style_widget/text.dart';
|
|
import 'package:flowy_infra_ui/widget/error_page.dart';
|
|
import 'package:flowy_infra_ui/widget/error_page.dart';
|
|
-import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|
|
|
-import 'package:appflowy_backend/protobuf/flowy-grid/field_entities.pb.dart';
|
|
|
|
-import 'package:appflowy_backend/protobuf/flowy-grid/row_entities.pb.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
+
|
|
import '../application/board_bloc.dart';
|
|
import '../application/board_bloc.dart';
|
|
import 'card/card.dart';
|
|
import 'card/card.dart';
|
|
import 'card/card_cell_builder.dart';
|
|
import 'card/card_cell_builder.dart';
|
|
import 'toolbar/board_toolbar.dart';
|
|
import 'toolbar/board_toolbar.dart';
|
|
|
|
|
|
class BoardPage extends StatelessWidget {
|
|
class BoardPage extends StatelessWidget {
|
|
- final ViewPB view;
|
|
|
|
BoardPage({
|
|
BoardPage({
|
|
required this.view,
|
|
required this.view,
|
|
Key? key,
|
|
Key? key,
|
|
|
|
+ this.onEditStateChanged,
|
|
}) : super(key: ValueKey(view.id));
|
|
}) : super(key: ValueKey(view.id));
|
|
|
|
|
|
|
|
+ final ViewPB view;
|
|
|
|
+
|
|
|
|
+ /// Called when edit state changed
|
|
|
|
+ final VoidCallback? onEditStateChanged;
|
|
|
|
+
|
|
@override
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
Widget build(BuildContext context) {
|
|
return BlocProvider(
|
|
return BlocProvider(
|
|
@@ -45,7 +51,9 @@ class BoardPage extends StatelessWidget {
|
|
const Center(child: CircularProgressIndicator.adaptive()),
|
|
const Center(child: CircularProgressIndicator.adaptive()),
|
|
finish: (result) {
|
|
finish: (result) {
|
|
return result.successOrFail.fold(
|
|
return result.successOrFail.fold(
|
|
- (_) => const BoardContent(),
|
|
|
|
|
|
+ (_) => BoardContent(
|
|
|
|
+ onEditStateChanged: onEditStateChanged,
|
|
|
|
+ ),
|
|
(err) => FlowyErrorPage(err.toString()),
|
|
(err) => FlowyErrorPage(err.toString()),
|
|
);
|
|
);
|
|
},
|
|
},
|
|
@@ -57,7 +65,12 @@ class BoardPage extends StatelessWidget {
|
|
}
|
|
}
|
|
|
|
|
|
class BoardContent extends StatefulWidget {
|
|
class BoardContent extends StatefulWidget {
|
|
- const BoardContent({Key? key}) : super(key: key);
|
|
|
|
|
|
+ const BoardContent({
|
|
|
|
+ Key? key,
|
|
|
|
+ this.onEditStateChanged,
|
|
|
|
+ }) : super(key: key);
|
|
|
|
+
|
|
|
|
+ final VoidCallback? onEditStateChanged;
|
|
|
|
|
|
@override
|
|
@override
|
|
State<BoardContent> createState() => _BoardContentState();
|
|
State<BoardContent> createState() => _BoardContentState();
|
|
@@ -79,7 +92,10 @@ class _BoardContentState extends State<BoardContent> {
|
|
@override
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
Widget build(BuildContext context) {
|
|
return BlocListener<BoardBloc, BoardState>(
|
|
return BlocListener<BoardBloc, BoardState>(
|
|
- listener: (context, state) => _handleEditStateChanged(state, context),
|
|
|
|
|
|
+ listener: (context, state) {
|
|
|
|
+ _handleEditStateChanged(state, context);
|
|
|
|
+ widget.onEditStateChanged?.call();
|
|
|
|
+ },
|
|
child: BlocBuilder<BoardBloc, BoardState>(
|
|
child: BlocBuilder<BoardBloc, BoardState>(
|
|
buildWhen: (previous, current) => previous.groupIds != current.groupIds,
|
|
buildWhen: (previous, current) => previous.groupIds != current.groupIds,
|
|
builder: (context, state) {
|
|
builder: (context, state) {
|