34 lines
774 B
Dart
34 lines
774 B
Dart
|
import 'package:flutter/material.dart';
|
||
|
|
||
|
class PostTextRenderer extends StatelessWidget {
|
||
|
const PostTextRenderer({
|
||
|
required this.html,
|
||
|
Key? key,
|
||
|
}) : super(key: key);
|
||
|
final String html;
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
String text = html;
|
||
|
text = handleParagraph(html);
|
||
|
text = handleBreak(text);
|
||
|
return SelectableText.rich(TextSpan(text: text, children: []));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
String handleParagraph(String input) {
|
||
|
RegExp opening = RegExp(r"<p>");
|
||
|
RegExp closing = RegExp(r"</p>");
|
||
|
|
||
|
String out = input.replaceAll(closing, "\n\n").replaceAll(opening, "");
|
||
|
if (out.endsWith("\n\n")) {
|
||
|
out = out.substring(0, out.length - 2);
|
||
|
}
|
||
|
|
||
|
return out;
|
||
|
}
|
||
|
|
||
|
String handleBreak(String input) {
|
||
|
return input.replaceAll("<br>", "\n");
|
||
|
}
|