108 lines
4.5 KiB
Dart
108 lines
4.5 KiB
Dart
import 'package:didvan/config/design_config.dart';
|
|
import 'package:didvan/utils/extension.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:markdown_widget/config/configs.dart';
|
|
import 'package:markdown_widget/widget/blocks/leaf/heading.dart';
|
|
import 'package:markdown_widget/widget/blocks/leaf/paragraph.dart';
|
|
import 'package:markdown_widget/widget/markdown.dart';
|
|
|
|
class DidvanMarkdownText extends StatelessWidget {
|
|
final String text;
|
|
final Color? color;
|
|
final double? width;
|
|
|
|
const DidvanMarkdownText(
|
|
{super.key, required this.text, this.color, this.width});
|
|
|
|
// onTapLink: (text, href, title) {
|
|
// if (href != null) {
|
|
// launchUrlString(
|
|
// href,
|
|
// mode: LaunchMode
|
|
// .inAppBrowserView,
|
|
// );
|
|
// }
|
|
// },
|
|
// MarkdownStyleSheet defaultMarkdownStyleSheet = MarkdownStyleSheet(
|
|
// pPadding: const EdgeInsets.all(0.8),
|
|
// h1Padding: const EdgeInsets.all(0.8),
|
|
// h2Padding: const EdgeInsets.all(0.8),
|
|
// h3Padding: const EdgeInsets.all(0.8),
|
|
// h4Padding: const EdgeInsets.all(0.8),
|
|
// h5Padding: const EdgeInsets.all(0.8),
|
|
// h6Padding: const EdgeInsets.all(0.8),
|
|
// tablePadding: const EdgeInsets.all(0.8),
|
|
// blockquotePadding: const EdgeInsets.all(0.8),
|
|
// listBulletPadding: const EdgeInsets.all(0.8),
|
|
// tableCellsPadding: const EdgeInsets.all(0.8),
|
|
// codeblockPadding: const EdgeInsets.all(8),
|
|
// code: TextStyle(
|
|
// backgroundColor: Theme.of(context).colorScheme.black,
|
|
// color: Theme.of(context).colorScheme.white,
|
|
// ),
|
|
// codeblockDecoration: BoxDecoration(
|
|
// borderRadius: BorderRadius.circular(4),
|
|
// color: Theme.of(context).colorScheme.black));
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Directionality(
|
|
textDirection:
|
|
text.startsWithEnglish() ? TextDirection.ltr : TextDirection.rtl,
|
|
child: SizedBox(
|
|
width: width,
|
|
child: MarkdownWidget(
|
|
data: text,
|
|
shrinkWrap: true,
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
selectable: true,
|
|
config: MarkdownConfig(configs: [
|
|
H1Config(
|
|
style: MarkdownConfig.defaultConfig.h1.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
H2Config(
|
|
style: MarkdownConfig.defaultConfig.h2.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
H3Config(
|
|
style: MarkdownConfig.defaultConfig.h3.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
H4Config(
|
|
style: MarkdownConfig.defaultConfig.h4.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
H5Config(
|
|
style: MarkdownConfig.defaultConfig.h5.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
H6Config(
|
|
style: MarkdownConfig.defaultConfig.h6.style.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color)),
|
|
PConfig(
|
|
textStyle: MarkdownConfig.defaultConfig.p.textStyle.copyWith(
|
|
fontFamily: text.startsWithEnglish()
|
|
? DesignConfig.fontFamily.replaceAll('-FA', '')
|
|
: null,
|
|
color: color))
|
|
]),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|