chore: added features list to readme

This commit is contained in:
jideguru 2021-05-29 20:38:29 +01:00
parent 50c75819ae
commit f95b40bb5b
6 changed files with 115 additions and 13 deletions

View File

@ -1,4 +1,4 @@
Copyright 2021 Festus Olusegun
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.

View File

@ -1,14 +1,45 @@
# rich_editor
# ✨ rich_editor
[![pub package](https://img.shields.io/pub/v/badge.svg)](https://pub.dartlang.org/packages/rich_editor)
[![pub points](https://badges.bar/rich_editor/pub%20points)](https://pub.dev/packages/sentry/rich_editor)
A new Flutter package.
WYSIWYG editor for Android and JavaFX with a rich set of supported formatting options.
## Getting Started
Based on https://github.com/dankito/RichTextEditor, but but for Flutter.
This project is a starting point for a Dart
[package](https://flutter.dev/developing-packages/),
a library module containing code that can be shared easily across
multiple Flutter or Dart projects.
## ✨ Features
- [x] Bold, Italic, Underline, Strike through, Subscript, Superscript
- [x] Heading 1 - 6, Text body, Preformatted, Block quote
- [] Font (reads all system fonts)
- [x] Font Size
- [x] Text Color
- [x] Text Background Color
- [x] Highlight text
- [x] Justify Left, Center, Right, Blockquote
- [x] Indent, Outdent
- [x] Undo, Redo
- [x] Unordered List (Bullets)
- [x] Ordered List (Numbers)
- [x] Insert local or remote Image
- [x] Insert Link
- [x] Insert Checkbox
- [] Search
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
## 📸 Screenshots
## License
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.

44
lib/src/models/enum.dart Normal file
View File

@ -0,0 +1,44 @@
enum CommandName {
UNDO,
REDO,
FORECOLOR,
BACKCOLOR,
FONTNAME,
FONTSIZE,
BOLD,
ITALIC,
UNDERLINE,
SUBSCRIPT,
SUPERSCRIPT,
STRIKETHROUGH,
FORMATBLOCK, // passes value for below format
H1,
H2,
H3,
H4,
H5,
H6,
P,
PRE,
BR, // not settable (at least i don't know how)
BLOCKQUOTE,
REMOVEFORMAT,
JUSTIFYCENTER,
JUSTIFYFULL,
JUSTIFYLEFT,
JUSTIFYRIGHT,
INDENT,
OUTDENT,
INSERTUNORDEREDLIST,
INSERTORDEREDLIST,
INSERTHORIZONTALRULE,
INSERTHTML, // determines if the three command below are executable
INSERTLINK, // pseudo commands, there are no corresponding values for execCommand()
INSERTIMAGE,
INSERTCHECKBOX,
// pseudo commands for toggling grouped command views
ENTER_VIEWING_MODE,
EXPANDING_SEARCH_VIEWING,
TOGGLE_GROUPED_TEXT_STYLES_COMMANDS_VIEW,
TOGGLE_GROUPED_INSERT_COMMANDS_COMMANDS_VIEW
}

View File

@ -0,0 +1,6 @@
class CommandState {
bool executable = false;
var value = "";
CommandState(this.executable, this.value);
}

View File

@ -1,10 +1,22 @@
import 'package:flutter/material.dart';
import 'package:rich_editor/src/extensions/extensions.dart';
import 'package:rich_editor/src/models/enum.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'command_state.dart';
class JavascriptExecutorBase {
WebViewController? _controller;
String defaultHtml = "<p>\u200B</p>";
String editorStateChangedCallbackScheme = "editor-state-changed-callback://";
String defaultEncoding = "UTF-8";
String? htmlField = "";
Map<CommandName, CommandState> commandStates = {};
init(WebViewController controller) {
_controller = controller;
}
@ -13,12 +25,17 @@ class JavascriptExecutorBase {
return await _controller!.evaluateJavascript('editor.$command');
}
String getCachedHtml() {
return htmlField!;
}
setHtml(String html) async {
String? baseUrl;
await executeJavascript("setHtml('" + encodeHtml(html) + "', '$baseUrl');");
htmlField = html;
}
getHtml() async {
getCurrentHtml() async {
String? html = await executeJavascript('getEncodedHtml()');
String? decodedHtml = Uri.decodeFull(html!);
if (decodedHtml.startsWith('"') && decodedHtml.endsWith('"')) {
@ -27,6 +44,10 @@ class JavascriptExecutorBase {
return decodedHtml;
}
bool isDefaultRichTextEditorHtml(String html) {
return defaultHtml == html;
}
// Text commands
undo() async {
await executeJavascript("undo()");

View File

@ -1,5 +1,5 @@
name: rich_editor
description: A new Flutter package.
description: WYSIWYG editor for Flutter with a rich set of supported formatting options.
version: 0.0.1
homepage: https://github.com/JideGuru/rich_editor