clepit_core
O pacote clepit_core é o gêmeo nativo Dart/Flutter do @clepit/core: o mesmo modelo de documento JSON, edição e renderização somente leitura a partir de uma base de código, mirando web, mobile e desktop. Documentos são intercambiáveis: EditorData.toJson() aqui é lido pelo pacote TypeScript e vice-versa.
pub.dev: clepit_core · npm: @clepit/core
Instalar
flutter pub add clepit_coreEditor
O Editor é uma superfície de edição completa: ferramentas de bloco, ferramentas inline, barras de ferramentas e tratamento de seleção. O EditorController também aceita tools e inlineTools para restringir ou estender o conjunto embutido, e expõe as APIs de documento, seleção e visão (EditorApi) para edições programáticas.
import 'package:clepit_core/clepit_core.dart';
final controller = EditorController(
initial: EditorData.fromJson(documentJson),
);
Editor(
controller: controller,
config: EditorConfig(
onChange: (data) => save(data),
),
);Renderer
O Renderer desenha um documento somente leitura, sem chrome de edição. Dados de bloco inválidos ou desconhecidos renderizam um InvalidDataPlaceholder em vez de lançar exceção, então um documento de um produtor mais antigo ou mais novo degrada visivelmente em vez de derrubar a visão.
Renderer(
config: RendererConfig(data: document),
);ClepitTheme
O estilo flui através do ClepitTheme, uma ThemeExtension no seu ThemeData, então o editor e o renderizador seguem o tema do seu app no claro e no escuro. Sobrescritas por renderização passam por RendererConfig.styles.
Vindo do @clepit/core
O mesmo conceito existe dos dois lados; os nomes seguem as convenções de cada plataforma.
| TypeScript | Dart |
|---|---|
| Editor | Editor |
| Renderer | Renderer |
| StyleManager | ThemeExtension<ClepitTheme> + ThemeData |
| Tool | BlockTool / InlineTool |
| Block<T> | sealed class Block |
| EditorAPI | EditorApi + BlocksApi, SelectionApi |