editor_widget.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. );
  17. }
  18. @override
  19. Widget build(BuildContext context) {
  20. return BlocProvider(
  21. create: (context) => getIt<DocBloc>(param1: doc.info.id),
  22. child: Column(
  23. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  24. children: [
  25. _renderEditor(controller),
  26. _renderToolbar(controller),
  27. ],
  28. ),
  29. );
  30. }
  31. Widget _renderEditor(EditorController controller) {
  32. final editor = FlowyEditor(
  33. controller: controller,
  34. focusNode: _focusNode,
  35. scrollable: true,
  36. autoFocus: false,
  37. expands: false,
  38. padding: const EdgeInsets.symmetric(horizontal: 8.0),
  39. readOnly: false,
  40. scrollBottomInset: 0,
  41. scrollController: ScrollController(),
  42. );
  43. return Expanded(child: editor);
  44. }
  45. Widget _renderToolbar(EditorController controller) {
  46. return FlowyToolbar.basic(
  47. controller: controller,
  48. onImageSelectCallback: _onImageSelection,
  49. );
  50. }
  51. Future<String> _onImageSelection(File file) {
  52. throw UnimplementedError();
  53. }
  54. }