clepit_core
Le paquet clepit_core est le jumeau natif Dart/Flutter de @clepit/core : le même modèle de document JSON, édition et rendu en lecture seule depuis une seule base de code, pour le web, le mobile et le bureau. Les documents sont interchangeables : EditorData.toJson() ici se lit avec le paquet TypeScript et réciproquement.
pub.dev: clepit_core · npm: @clepit/core
Installation
flutter pub add clepit_coreEditor
Editor est une surface d'édition complète : outils de blocs, outils en ligne, barres d'outils et gestion de la sélection. EditorController accepte aussi tools et inlineTools pour restreindre ou étendre l'ensemble intégré, et expose les API de document, de sélection et de vue (EditorApi) pour les éditions programmatiques.
import 'package:clepit_core/clepit_core.dart';
final controller = EditorController(
initial: EditorData.fromJson(documentJson),
);
Editor(
controller: controller,
config: EditorConfig(
onChange: (data) => save(data),
),
);Renderer
Renderer dessine un document en lecture seule, sans habillage d'édition. Des données de bloc invalides ou inconnues rendent un InvalidDataPlaceholder au lieu de lever une exception : un document d'un producteur plus ancien ou plus récent se dégrade visiblement plutôt que de faire planter la vue.
Renderer(
config: RendererConfig(data: document),
);ClepitTheme
Le style transite par ClepitTheme, une ThemeExtension sur votre ThemeData : l'éditeur et le moteur de rendu suivent le thème de votre application en clair et en sombre. Les surcharges par rendu passent par RendererConfig.styles.
En venant de @clepit/core
Le même concept existe des deux côtés ; les noms suivent les conventions de chaque plateforme.
| TypeScript | Dart |
|---|---|
| Editor | Editor |
| Renderer | Renderer |
| StyleManager | ThemeExtension<ClepitTheme> + ThemeData |
| Tool | BlockTool / InlineTool |
| Block<T> | sealed class Block |
| EditorAPI | EditorApi + BlocksApi, SelectionApi |