encodeProps function
Encodes a Map as a base64-encoded JSON string for use in HTML attributes.
This is useful for passing complex data structures to components without worrying about HTML escaping issues.
Example
// Server-side rendering
static String render({required User user}) {
return '''
<$tag data="${encodeProps({'name': user.name, 'id': user.id})}">
...
</$tag>
''';
}
// Client-side hydration
@override
void connectedCallback() {
final data = decodeProps(prop('data'));
final userName = data['name'] as String;
}
Implementation
String encodeProps(Map<String, dynamic> props) {
final json = jsonEncode(props);
return base64Encode(utf8.encode(json));
}