getGenericMarkdownTheme method

MarkdownStyleSheet getGenericMarkdownTheme(
  1. BuildContext context, {
  2. Color? overideTextColor,
})

Implementation

MarkdownStyleSheet getGenericMarkdownTheme(BuildContext context, {Color? overideTextColor}) {
  var baseTextStyle = TextStyle(color: overideTextColor ?? textColor);

  var tt = Theme.of(context).textTheme;

  double bodyMediumFontSize = tt.bodyMedium?.fontSize ?? 14.0;

  // Multiplicateurs remappés (max = 1.75 pour h1)
  const double h1Multiplier = 1.75;  // Titre principal
  const double h2Multiplier = 1.5;   // Sous-titre principal
  const double h3Multiplier = 1.3;   // Sous-section
  const double h4Multiplier = 1.15;  // Sous-sous-section
  const double h5Multiplier = 1.05;  // Petit titre
  const double h6Multiplier = 1.0;   // Même taille que le texte (gras uniquement)

  return MarkdownStyleSheet.fromTheme(Theme.of(context)).copyWith(
    p: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: tt.bodyMedium?.fontSize, // x1 (base)
      ),
      h1: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h1Multiplier,
        fontWeight: FontWeight.bold,
      ),
      h2: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h2Multiplier,
        fontWeight: FontWeight.bold,
      ),
      h3: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h3Multiplier,
        fontWeight: FontWeight.bold,
      ),
      h4: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h4Multiplier,
        fontWeight: FontWeight.bold,
      ),
      h5: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h5Multiplier,
        fontWeight: FontWeight.bold,
      ),
      h6: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontSize: bodyMediumFontSize * h6Multiplier,
        fontWeight: FontWeight.bold,
      ),
      em: tt.bodyMedium?.copyWith(
        color: overideTextColor ?? textColor,
        fontStyle: FontStyle.italic, // Emphase en italique (pas en gras)
      ),
    strong: baseTextStyle,
    code: baseTextStyle,
    blockquote: baseTextStyle,
    listBullet: baseTextStyle,
    horizontalRuleDecoration: BoxDecoration(
      border: Border(
        top: BorderSide(
          color: Colors.grey.withValues(alpha: 0.4), // couleur de la ligne
          width: 2.0, // épaisseur
          style: BorderStyle.solid,
        ),
      ),
    ),
  );
}