PageData.auto constructor
PageData.auto(
- String url,
- dynamic content
Implementation
factory PageData.auto(String url, dynamic content) {
// Normalize input: support raw bytes by decoding as UTF-8
// Only treat Uint8List as bytes; generic List<int> may be real JSON arrays
dynamic normalized = content;
if (content is Uint8List) {
try {
normalized = utf8.decode(content);
} catch (_) {
try {
normalized = gbk.decode(content);
} catch (_) {
normalized = content.toString();
}
}
}
if (normalized is! String) {
return PageData.json(url, normalized);
} else {
var text = normalized.trim();
// XML → JSON conversion
if (text.startsWith("<?xml")) {
try {
final transfomer = Xml2Json();
transfomer.parse(text);
text = transfomer.toParkerWithAttrs();
} catch (_) {}
}
// Decode JSON from possibly converted text
try {
return PageData.json(url, tryParseJson(text, throwException: true));
} catch (_) {}
}
return PageData.html(url, normalized.toString());
}