diff --git a/packages/note_dart/lib/src/content/example_content.dart b/packages/note_dart/lib/src/content/example_content.dart index d5736d2b..55ae7c82 100644 --- a/packages/note_dart/lib/src/content/example_content.dart +++ b/packages/note_dart/lib/src/content/example_content.dart @@ -7,9 +7,10 @@ import 'package:note_dart/src/note_core.dart'; import 'package:note_dart/ui.dart'; import 'package:code_builder/code_builder.dart' as code; +/// 暂时搁置参数需求 /// this package is dependency by note page -class ExampleContent extends NoteContent { +class ExampleContent { final Mate mate; final bool isShowCode; final bool isShowParamEditor; @@ -119,7 +120,7 @@ class SampleTemplate { } } -class ExampleWidget extends StatelessWidget with NoteContentWidgetMixin { +class ExampleWidget extends StatelessWidget { final ObjectParam rootParam; final String title; final ExampleContent content; diff --git a/packages/note_dart/lib/src/content/markdown_content.dart b/packages/note_dart/lib/src/content/markdown_content.dart index 26de8f37..78bc32a1 100644 --- a/packages/note_dart/lib/src/content/markdown_content.dart +++ b/packages/note_dart/lib/src/content/markdown_content.dart @@ -1,42 +1,22 @@ import 'package:flutter/material.dart'; import 'package:flutter_highlight/themes/vs2015.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; -import 'package:note_dart/note.dart'; import 'package:markdown/markdown.dart' as md; import 'package:note_dart/src/flutter_highlight.dart'; import 'package:note_dart/src/note_core.dart'; -import 'package:note_dart/src/utils_core.dart'; - -extension MarkdownPenExtension on Pen { - void markdown(String content) { - call(MarkdownContent(content)); - } -} - -class MarkdownContent extends NoteContent { - final String content; - - MarkdownContent(this.content); - - @override - String toString() { - return "MarkdownContent('${content.replaceAll("\n", "\\n").safeSubstring(0, 50)}')"; - } -} - -class MarkdownContentWidget extends StatelessWidget with NoteContentWidgetMixin { +class MarkdownContent extends StatelessWidget { final Outline outline; - final MarkdownContent content; final ScrollController controller = ScrollController(); + final String content; - MarkdownContentWidget({super.key, required this.outline, required this.content}); + MarkdownContent({super.key, required this.outline, required this.content}); @override Widget build(BuildContext context) { var headerBuilder = _HeaderBuilder(outline); return Markdown( - data: content.content, + data: content, selectable: true, // 得研究下controller层层嵌套要怎么用 controller: controller, @@ -96,7 +76,7 @@ class _HeaderBuilder extends MarkdownElementBuilder { void visitElementBefore(md.Element element) { // tag value : h1 | h2 | h3 .... currentNode = OutlineNode( - // globalKey用来滚动到此位置 + // FIXME 这里处理有问题,GlobalKey 不能这样用:globalKey用来滚动到此位置 key: GlobalKey(), heading: int.parse(element.tag.substring(1)), title: element.textContent, diff --git a/packages/note_dart/lib/src/content/object_content.dart b/packages/note_dart/lib/src/content/object_content.dart index 4ade3000..45ecd09d 100644 --- a/packages/note_dart/lib/src/content/object_content.dart +++ b/packages/note_dart/lib/src/content/object_content.dart @@ -1,10 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:note_dart/src/note_core.dart'; -class ObjectContentWidget extends StatelessWidget with NoteContentWidgetMixin { +class ObjectContent extends StatelessWidget { final Object? content; - const ObjectContentWidget({super.key, required this.content}); + const ObjectContent({super.key, required this.content}); @override Widget build(BuildContext context) { diff --git a/packages/note_dart/lib/src/content/widget_content.dart b/packages/note_dart/lib/src/content/widget_content.dart deleted file mode 100644 index caf3fdac..00000000 --- a/packages/note_dart/lib/src/content/widget_content.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:note_dart/src/note_core.dart'; - - -// FIXME 同样可以拆除 -class WidgetContentWidget extends StatelessWidget with NoteContentWidgetMixin { - final Widget content; - - const WidgetContentWidget({super.key, required this.content}); - - @override - Widget build(BuildContext context) { - return content; - } -} \ No newline at end of file diff --git a/packages/note_dart/lib/src/note_core.dart b/packages/note_dart/lib/src/note_core.dart index 45caad9b..85c591ed 100644 --- a/packages/note_dart/lib/src/note_core.dart +++ b/packages/note_dart/lib/src/note_core.dart @@ -3,10 +3,7 @@ import 'package:meta/meta.dart'; import 'package:flutter/material.dart'; import 'package:note_dart/note_conf.dart'; -import 'package:note_dart/src/content/example_content.dart'; import 'package:note_dart/src/content/object_content.dart'; -import 'package:note_dart/src/content/params.dart'; -import 'package:note_dart/src/content/widget_content.dart'; import 'package:note_dart/src/content/markdown_content.dart'; import 'package:note_dart/src/conventions.dart'; import 'package:note_dart/src/utils_core.dart'; @@ -49,7 +46,6 @@ NoteSource _emptyPageSource = NoteSource(pageGenInfo: _emptyPageGenInfo); class NoteSystem { final Note root; - final Editors _editors = Editors(); //暂时不让外部配置了,默认即可 NoteSystem({ required this.root, }); @@ -372,12 +368,11 @@ class Pen { return "$es : $stack"; } } -} - -/// note content is not widget , it is data. -abstract class NoteContent {} -mixin NoteContentWidgetMixin on Widget {} + void markdown(String content) { + print(MarkdownContent(outline: outline, content: content)); + } +} // markdown 的结构轮廓,主要用来显示TOC class Outline { @@ -544,7 +539,7 @@ enum CellType { /// 一个cell代表note中的一个代码块及其产生的内容 /// A cell represents a code block in a note and its generated content class NoteCell extends ChangeNotifier { - final List _contents = List.empty(growable: true); + final List _contents = List.empty(growable: true); // index use to find code final int index; @@ -588,20 +583,19 @@ class NoteCell extends ChangeNotifier { bool get isAllMarkdownContent { if (_contents.isEmpty) return false; - return _contents.every((e) => e is MarkdownContentWidget); + return _contents.every((e) => e is MarkdownContent); } void call(Object? content) { - var result = switch (content) { - MarkdownContent _ => MarkdownContentWidget(content: content, outline: outline), - Widget _ => WidgetContentWidget(content: content), - ExampleContent _ => ExampleWidget(content: content, rootParam: content.mate.toRootParam(editors: noteSystem._editors), cell: this), - _ => ObjectContentWidget(content: content), + Widget result = switch (content) { + String _ => MarkdownContent(content: content, outline: outline), + Widget widget => widget, + _ => ObjectContent(content: content), }; - _add(result as NoteContentWidgetMixin); + _add(result); } - void _add(NoteContentWidgetMixin content) { + void _add(Widget content) { _contents.add(content); notifyListeners(); }