doc_page.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'dart:io';
  2. import 'package:app_flowy/startup/startup.dart';
  3. import 'package:app_flowy/workspace/application/doc/doc_edit_bloc.dart';
  4. import 'package:app_flowy/workspace/domain/i_doc.dart';
  5. import 'package:flowy_editor/flowy_editor.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_bloc/flutter_bloc.dart';
  8. // ignore: must_be_immutable
  9. class DocPage extends StatelessWidget {
  10. final FocusNode _focusNode = FocusNode();
  11. late EditorController controller;
  12. final FlowyDoc doc;
  13. DocPage({Key? key, required this.doc}) : super(key: key) {
  14. // getIt<EditorChangesetSender>(param1: doc.id))
  15. controller = EditorController(
  16. document: doc.data,
  17. selection: const TextSelection.collapsed(offset: 0),
  18. persistence: getIt<EditorPersistence>(param1: doc.id));
  19. }
  20. @override
  21. Widget build(BuildContext context) {
  22. return BlocProvider(
  23. create: (context) => getIt<DocEditBloc>(param1: doc.id),
  24. child: BlocBuilder<DocEditBloc, DocEditState>(
  25. builder: (ctx, state) {
  26. return Column(
  27. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  28. children: [
  29. _renderEditor(controller),
  30. _renderToolbar(controller),
  31. ],
  32. );
  33. },
  34. ),
  35. );
  36. }
  37. Widget _renderEditor(EditorController controller) {
  38. final editor = FlowyEditor(
  39. controller: controller,
  40. focusNode: _focusNode,
  41. scrollable: true,
  42. autoFocus: false,
  43. expands: false,
  44. padding: const EdgeInsets.symmetric(horizontal: 8.0),
  45. readOnly: false,
  46. scrollBottomInset: 0,
  47. scrollController: ScrollController(),
  48. );
  49. return Expanded(
  50. child: Padding(padding: const EdgeInsets.all(10), child: editor),
  51. );
  52. }
  53. Widget _renderToolbar(EditorController controller) {
  54. return FlowyToolbar.basic(
  55. controller: controller,
  56. onImageSelectCallback: _onImageSelection,
  57. );
  58. }
  59. Future<String> _onImageSelection(File file) {
  60. throw UnimplementedError();
  61. }
  62. }