Skip to content

Commit

Permalink
refactor 先清理掉参数相关便于后续大型重构
Browse files Browse the repository at this point in the history
  • Loading branch information
chen56 committed Apr 17, 2024
1 parent b045944 commit 226219e
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 63 deletions.
5 changes: 3 additions & 2 deletions packages/note_dart/lib/src/content/example_content.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
30 changes: 5 additions & 25 deletions packages/note_dart/lib/src/content/markdown_content.dart
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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,
Expand Down
5 changes: 2 additions & 3 deletions packages/note_dart/lib/src/content/object_content.dart
Original file line number Diff line number Diff line change
@@ -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) {
Expand Down
15 changes: 0 additions & 15 deletions packages/note_dart/lib/src/content/widget_content.dart

This file was deleted.

30 changes: 12 additions & 18 deletions packages/note_dart/lib/src/note_core.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -49,7 +46,6 @@ NoteSource _emptyPageSource = NoteSource(pageGenInfo: _emptyPageGenInfo);

class NoteSystem {
final Note root;
final Editors _editors = Editors(); //暂时不让外部配置了,默认即可
NoteSystem({
required this.root,
});
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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<NoteContentWidgetMixin> _contents = List.empty(growable: true);
final List<Widget> _contents = List.empty(growable: true);

// index use to find code
final int index;
Expand Down Expand Up @@ -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();
}
Expand Down

0 comments on commit 226219e

Please sign in to comment.