import 'package:html/parser.dart' as html_parser; // To parse the HTML import 'package:html/dom.dart'; // For working with the DOM structure void main() { // Example HTML content with some nested tags String htmlContent = '''
Line 1
Line 2
Line 3
Nested Line 4
Line 5
'''; // Parse the HTML content Document document = html_parser.parse(htmlContent); // Find the desired element Element? divElement = document.querySelector('div'); if (divElement != null) { // Extract and preserve newlines recursively String preservedText = preserveTextWithNewlines(divElement); print(preservedText); } } String preserveTextWithNewlines(Element element) { final buffer = StringBuffer(); for (var node in element.nodes) { if (node is Text) { // Append text content buffer.write(node.text); } else if (node is Element) { if (node.localName == 'br') { // Add newline for
tags buffer.write('\n'); } else { // Recursively process child elements buffer.write(preserveTextWithNewlines(node)); } } } return buffer.toString(); }