Flutter文本编辑器插件editor_v1的使用

Flutter文本编辑器插件editor_v1的使用

✨ editor_v1

✨ 特性

  • ✅ 粗体、斜体、下划线、删除线、上标、下标
  • ✅ 标题1到标题6、正文、预格式化文本、引用块
  • ✅ 字体(读取所有系统字体)(仅限Android)
  • ✅ 字号
  • ✅ 文本颜色
  • ✅ 文本背景色
  • ✅ 高亮文本
  • ✅ 左对齐、居中、右对齐、引用块
  • ✅ 缩进、缩出
  • ✅ 撤销、重做
  • ✅ 无序列表(项目符号)
  • ✅ 有序列表(数字)
  • ✅ 插入本地或远程图片
  • ✅ 插入链接
  • ✅ 插入复选框
  • ❌ 搜索
  • ❌ 图标指示器

📸 截图

Usage

// 在树中插入编辑器
RichEditor(
  key: keyEditor,
  value: '初始HTML内容', // 初始HTML内容
  editorOptions: RichEditorOptions(
    placeholder: '开始输入', // 提示文字
    // backgroundColor: Colors.blueGrey, // 编辑器背景色
    // baseTextColor: Colors.white,
    // 编辑器内边距
    padding: EdgeInsets.symmetric(horizontal: 5.0),
    // 字体名称
    baseFontFamily: 'sans-serif',
    // 编辑栏的位置 (BarPosition.TOP 或 BarPosition.BOTTOM)
    barPosition: BarPosition.TOP,
  ),
  // 可以返回一个链接(可能需要将图片上传到您的存储空间后再在编辑器中显示,或者也可以使用base64编码)
  getImageUrl: (image) {
    String link = 'https://avatars.githubusercontent.com/u/24323581?v=4';
    String base64 = base64Encode(image.readAsBytesSync());
    String base64String = 'data:image/png;base64, $base64';
    return base64String;
  },
)

获取当前编辑器的HTML内容

String? html = await keyEditor.currentState?.getHtml();
print(html);

设置焦点和取消焦点

await keyEditor.currentState?.focus(); // 设置焦点
await keyEditor.currentState?.unFocus(); // 取消焦点

清空编辑器内容

await keyEditor.currentState?.clear();

Custom Toolbar

如果您有兴趣创建自己的工具栏,请查看示例中的 custom_toolbar_demo.dart

许可证

Copyright 2021 JideGuru

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

更多关于Flutter文本编辑器插件editor_v1的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本编辑器插件editor_v1的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


editor_v1 是一个 Flutter 插件,用于在应用中嵌入一个功能丰富的文本编辑器。它支持常见的文本编辑功能,如格式化、插入图片、链接等。以下是使用 editor_v1 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 editor_v1 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  editor_v1: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用文本编辑器的 Dart 文件中导入 editor_v1 插件:

import 'package:editor_v1/editor_v1.dart';

3. 使用 Editor 组件

在 Flutter 应用中使用 Editor 组件来显示文本编辑器。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:editor_v1/editor_v1.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Text Editor'),
        ),
        body: EditorExample(),
      ),
    );
  }
}

class EditorExample extends StatefulWidget {
  [@override](/user/override)
  _EditorExampleState createState() => _EditorExampleState();
}

class _EditorExampleState extends State<EditorExample> {
  final EditorController _controller = EditorController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      children: [
        Expanded(
          child: Editor(
            controller: _controller,
            placeholder: 'Start typing...',
          ),
        ),
        ElevatedButton(
          onPressed: () {
            // 获取编辑器中的内容
            String content = _controller.getText();
            print('Editor Content: $content');
          },
          child: Text('Get Content'),
        ),
      ],
    );
  }

  [@override](/user/override)
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}

4. 控制编辑器内容

EditorController 用于控制文本编辑器的内容。你可以使用它来获取或设置编辑器中的文本内容:

  • 获取内容:使用 _controller.getText() 获取编辑器中的文本内容。
  • 设置内容:使用 _controller.setText(String text) 设置编辑器中的文本内容。

5. 处理编辑器事件

Editor 组件还支持各种事件监听,例如文本变化、光标位置变化等。你可以通过 onChanged 等回调来处理这些事件。

Editor(
  controller: _controller,
  placeholder: 'Start typing...',
  onChanged: (String text) {
    print('Text changed: $text');
  },
);

6. 自定义样式

你可以通过 Editor 组件的参数来自定义编辑器的样式,例如字体、颜色、间距等。具体的参数可以参考插件的文档。

7. 处理图片、链接等

editor_v1 插件通常支持插入图片、链接等功能。你可以使用 _controller.insertImage(String imageUrl)_controller.insertLink(String url) 来插入图片或链接。

8. 保存和加载内容

你可以将编辑器中的内容保存到本地或服务器,并在需要时加载到编辑器中。使用 _controller.getText() 获取内容并保存,使用 _controller.setText(String text) 加载内容。

9. 处理编辑器销毁

dispose 方法中释放 EditorController 资源,以避免内存泄漏。

[@override](/user/override)
void dispose() {
  _controller.dispose();
  super.dispose();
}
回到顶部