editor_widget.dart 1.8 KB

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