Flutter文档合并插件mdmerge的使用

Flutter文档合并插件mdmerge的使用

使用占位符在Markdown文件中包含其他Markdown、文本或源文件。

占位符语句可以是(a)相对于当前Markdown文件的位置,也可以是(b)相对于当前工作目录。Dart文件被包裹在代码块中–dart-markdown。

更新现有的Markdown文件

生成的文件要么(a)复制到一个output目录中,要么(b)覆盖现有Markdown文件的位置。在后一种情况下,运行前请先备份,可能会出错。

更新/覆盖Markdown文件会保留占位符。因此,已经更新/覆盖过的Markdown文件可以重复进行更新/覆盖。

Markdown文件

包含Markdown文件

<include file="child.md"></include>

包含dart文件

<include file="lib/mdmerge.dart"></include>


### 安装

激活:

```shell
dart pub global activate mdmerge

或者作为依赖项添加:

dart pub add dev:mdmerge

使用

默认情况下,Markdown文件在input目录中将检查占位符。如果未指定output,则源Markdown文件将用引用的内容进行更新。

因此,--dry-run是默认选项,它只会模拟更新。

作为开发依赖项安装后,运行mdmerge命令如下:

dart run mdmerge include <... PARAMS...>

全局安装后,运行mdmerge命令如下:

dart pub global run mdmerge include

dart pub global run mdmerge include --input <DIR> --output <DIR>

dart pub global run mdmerge include --input <FILE> --output <DIR>

查看帮助信息:

dart pub global run mdmerge include --help

信息

该包是临时编写而成的,请在使用前做好备份。

待办事项

  • 将逻辑封装在一个类中。
  • 添加测试。

示例代码

以下是在Markdown文件中使用mdmerge插件的示例代码:

Installation

激活:

dart pub global activate mdmerge

占位符

在Markdown文件中添加这些占位符,注释标签需要三个(!)破折号:

Markdown文件

包含Markdown文件

<include file="child.md"></include>

包含dart文件

<include file="lib/mdmerge.dart"></include>


# 运行 <a id="run"></a>

默认情况下,dry-run是开启的,仅运行模拟:

```shell
dart pub global run mdmerge include --input <DIR> 

写入输出目录:

dart pub global run mdmerge include --input <DIR> --output <DIR> --no-dry-run

覆盖源文件(可能是破坏性的,请先备份):

dart pub global run mdmerge include --input <DIR> --no-dry-run

更多关于Flutter文档合并插件mdmerge的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文档合并插件mdmerge的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用mdmerge插件来合并Markdown文档的示例代码。mdmerge插件(如果它存在的话,因为Flutter社区插件众多且可能随时间变化)通常用于将多个Markdown文件合并成一个。不过,由于mdmerge这个具体名称的插件在Flutter社区可能并不普遍,我将给出一个通用的Markdown合并示例,你可以根据这个示例找到或实现一个类似的插件功能。

首先,你需要确保你的Flutter项目中有处理Markdown的依赖,比如flutter_markdown。以下是如何在pubspec.yaml中添加这个依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_markdown: ^0.x.x  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,假设我们有两个Markdown文件file1.mdfile2.md,内容如下:

file1.md:

# 文件1
这是文件1的内容。

file2.md:

# 文件2
这是文件2的内容。

我们可以编写一个Dart函数来读取并合并这两个文件的内容,然后使用flutter_markdown插件来显示合并后的Markdown内容。

import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'dart:io';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Markdown Merge Example'),
        ),
        body: MarkdownMerger(),
      ),
    );
  }
}

class MarkdownMerger extends StatefulWidget {
  @override
  _MarkdownMergerState createState() => _MarkdownMergerState();
}

class _MarkdownMergerState extends State<MarkdownMerger> {
  String? mergedMarkdown;

  @override
  void initState() {
    super.initState();
    _mergeMarkdownFiles();
  }

  Future<void> _mergeMarkdownFiles() async {
    String file1Content = await _readFile('assets/file1.md');
    String file2Content = await _readFile('assets/file2.md');
    String mergedContent = '''
$file1Content

$file2Content
''';
    setState(() {
      mergedMarkdown = mergedContent;
    });
  }

  Future<String> _readFile(String path) async {
    File file = File(path);
    return await file.readAsString();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: mergedMarkdown != null
          ? Markdown(data: mergedMarkdown!)
          : CircularProgressIndicator(),
    );
  }
}

注意

  1. 上面的代码假设Markdown文件位于项目的assets文件夹中。你需要将file1.mdfile2.md移动到assets文件夹,并在pubspec.yaml中声明这些资产:
flutter:
  assets:
    - assets/file1.md
    - assets/file2.md
  1. 由于Flutter的File类默认访问的是设备的文件系统,而不是应用的资产文件夹,所以在实际项目中,你可能需要使用rootBundle来读取资产文件,如下所示:
Future<String> _readFileFromAssets(String path) async {
  return await rootBundle.loadString(path);
}

并在_mergeMarkdownFiles方法中使用这个新函数:

String file1Content = await _readFileFromAssets('assets/file1.md');
String file2Content = await _readFileFromAssets('assets/file2.md');

这个示例展示了如何在Flutter应用中读取和合并Markdown文件,并使用flutter_markdown插件显示合并后的内容。如果你找到一个名为mdmerge的特定插件,其使用方法可能会有所不同,但基本思路是相似的:读取文件、合并内容、显示结果。

回到顶部