import 'package:flutter/material.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; /// Rendu d'un champ traduit. Tous les champs saisis dans le manager passent par /// l'éditeur riche : leur valeur est du HTML, titres compris. /// /// La marge par défaut des `

` est neutralisée pour que le bloc s'aligne comme /// un `Text` à la place duquel il est posé. class HtmlText extends StatelessWidget { const HtmlText(this.html, {super.key, this.style, this.textAlign}); final String html; /// Par défaut, le style ambiant — celui que `ListTile` applique à son titre, /// par exemple. final TextStyle? style; final TextAlign? textAlign; @override Widget build(BuildContext context) { return HtmlWidget( html, textStyle: style ?? DefaultTextStyle.of(context).style, customStylesBuilder: (_) => { 'margin': '0', if (textAlign != null) 'text-align': _cssAlign(textAlign!), }, ); } static String _cssAlign(TextAlign align) => switch (align) { TextAlign.center => 'center', TextAlign.right || TextAlign.end => 'right', TextAlign.justify => 'justify', _ => 'left', }; }