doc_page.dart 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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:editor/flutter_quill.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter_bloc/flutter_bloc.dart';
  9. class DocPage extends StatefulWidget {
  10. late QuillController controller;
  11. late DocEditBloc editBloc;
  12. final FlowyDoc doc;
  13. DocPage({Key? key, required this.doc}) : super(key: key) {
  14. editBloc = getIt<DocEditBloc>(param1: doc.id);
  15. controller = QuillController(
  16. document: doc.document,
  17. selection: const TextSelection.collapsed(offset: 0),
  18. );
  19. }
  20. @override
  21. State<DocPage> createState() => _DocPageState();
  22. }
  23. class _DocPageState extends State<DocPage> {
  24. final FocusNode _focusNode = FocusNode();
  25. @override
  26. Widget build(BuildContext context) {
  27. return BlocProvider.value(
  28. value: widget.editBloc,
  29. child: BlocBuilder<DocEditBloc, DocEditState>(
  30. builder: (ctx, state) {
  31. return Column(
  32. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  33. children: [
  34. _renderEditor(widget.controller),
  35. _renderToolbar(widget.controller),
  36. ],
  37. );
  38. },
  39. ),
  40. );
  41. }
  42. @override
  43. Future<void> dispose() async {
  44. widget.editBloc.add(const DocEditEvent.close());
  45. widget.editBloc.close();
  46. super.dispose();
  47. await widget.doc.close();
  48. }
  49. Widget _renderEditor(QuillController controller) {
  50. final editor = QuillEditor(
  51. controller: controller,
  52. focusNode: _focusNode,
  53. scrollable: true,
  54. autoFocus: false,
  55. expands: false,
  56. padding: const EdgeInsets.symmetric(horizontal: 8.0),
  57. readOnly: false,
  58. scrollBottomInset: 0,
  59. scrollController: ScrollController(),
  60. );
  61. return Expanded(
  62. child: Padding(padding: const EdgeInsets.all(10), child: editor),
  63. );
  64. }
  65. Widget _renderToolbar(QuillController controller) {
  66. return QuillToolbar.basic(
  67. controller: controller,
  68. );
  69. }
  70. Future<String> _onImageSelection(File file) {
  71. throw UnimplementedError();
  72. }
  73. }
  74. // import 'package:flowy_editor/flowy_editor.dart';
  75. // ignore: must_be_immutable
  76. // class DocPage extends StatefulWidget {
  77. // late EditorController controller;
  78. // late DocEditBloc editBloc;
  79. // final FlowyDoc doc;
  80. // DocPage({Key? key, required this.doc}) : super(key: key) {
  81. // editBloc = getIt<DocEditBloc>(param1: doc.id);
  82. // controller = EditorController(
  83. // document: doc.document,
  84. // selection: const TextSelection.collapsed(offset: 0),
  85. // );
  86. // }
  87. // @override
  88. // State<DocPage> createState() => _DocPageState();
  89. // }
  90. // class _DocPageState extends State<DocPage> {
  91. // final FocusNode _focusNode = FocusNode();
  92. // @override
  93. // Widget build(BuildContext context) {
  94. // return BlocProvider.value(
  95. // value: widget.editBloc,
  96. // child: BlocBuilder<DocEditBloc, DocEditState>(
  97. // builder: (ctx, state) {
  98. // return Column(
  99. // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  100. // children: [
  101. // _renderEditor(widget.controller),
  102. // _renderToolbar(widget.controller),
  103. // ],
  104. // );
  105. // },
  106. // ),
  107. // );
  108. // }
  109. // @override
  110. // Future<void> dispose() async {
  111. // widget.editBloc.add(const DocEditEvent.close());
  112. // widget.editBloc.close();
  113. // super.dispose();
  114. // await widget.doc.close();
  115. // }
  116. // Widget _renderEditor(EditorController controller) {
  117. // final editor = FlowyEditor(
  118. // controller: controller,
  119. // focusNode: _focusNode,
  120. // scrollable: true,
  121. // autoFocus: false,
  122. // expands: false,
  123. // padding: const EdgeInsets.symmetric(horizontal: 8.0),
  124. // readOnly: false,
  125. // scrollBottomInset: 0,
  126. // scrollController: ScrollController(),
  127. // );
  128. // return Expanded(
  129. // child: Padding(padding: const EdgeInsets.all(10), child: editor),
  130. // );
  131. // }
  132. // Widget _renderToolbar(EditorController controller) {
  133. // return FlowyToolbar.basic(
  134. // controller: controller,
  135. // onImageSelectCallback: _onImageSelection,
  136. // );
  137. // }
  138. // Future<String> _onImageSelection(File file) {
  139. // throw UnimplementedError();
  140. // }
  141. // }