47 lines
1.2 KiB
Dart
47 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
|
import 'package:loris/business_logic/emoji/emoji.dart';
|
|
|
|
class NameDisplay extends StatelessWidget {
|
|
const NameDisplay({
|
|
super.key,
|
|
required this.emoji,
|
|
required this.content,
|
|
required this.style,
|
|
});
|
|
final List<Emoji> emoji;
|
|
final String content;
|
|
final TextStyle style;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
String newtext = content;
|
|
newtext = newtext
|
|
.replaceAll("~", r"\~")
|
|
.replaceAll("*", r"\*")
|
|
.replaceAll("[", r"\[")
|
|
.replaceAll("]", r"\]")
|
|
.replaceAll("(", r"\(")
|
|
.replaceAll(")", r"\)");
|
|
for (var e in emoji) {
|
|
newtext = insertEmojiInMd(newtext, e);
|
|
}
|
|
|
|
return MarkdownBody(
|
|
data: newtext,
|
|
styleSheet: MarkdownStyleSheet(p: style),
|
|
imageBuilder: (uri, title, alt) {
|
|
try {
|
|
return Image.network(
|
|
uri.toString(),
|
|
height: style.fontSize,
|
|
errorBuilder: (context, error, stackTrace) =>
|
|
SelectableText(alt ?? error.toString()),
|
|
);
|
|
} catch (e) {
|
|
return SelectableText(alt ?? "");
|
|
}
|
|
});
|
|
}
|
|
}
|