loris/lib/partials/name.dart

48 lines
1.3 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"\(")
.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 ?? "");
}
});
}
}