chore: added features list to readme
This commit is contained in:
44
lib/src/models/enum.dart
Normal file
44
lib/src/models/enum.dart
Normal 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
|
||||
}
|
||||
6
lib/src/utils/command_state.dart
Normal file
6
lib/src/utils/command_state.dart
Normal file
@@ -0,0 +1,6 @@
|
||||
class CommandState {
|
||||
bool executable = false;
|
||||
var value = "";
|
||||
|
||||
CommandState(this.executable, this.value);
|
||||
}
|
||||
@@ -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()");
|
||||
|
||||
Reference in New Issue
Block a user