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

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()");