import 'dart:convert'; import 'dart:typed_data'; T jsonDecodeBytes(T Function(dynamic) fromJson, Uint8List data) => fromJson(jsonDecode(utf8.decode(data))); T? jsonDecodeOptBytes(T Function(dynamic) fromJson, Uint8List? data) => (data == null) ? null : fromJson(jsonDecode(utf8.decode(data))); Uint8List jsonEncodeBytes(Object? object, {Object? Function(Object?)? toEncodable}) => Uint8List.fromList( utf8.encode(jsonEncode(object, toEncodable: toEncodable))); Future jsonUpdateBytes(T Function(dynamic) fromJson, Uint8List oldBytes, Future Function(T) update) async { final oldObj = fromJson(jsonDecode(utf8.decode(oldBytes))); final newObj = await update(oldObj); return jsonEncodeBytes(newObj); } Future Function(Uint8List) jsonUpdate( T Function(dynamic) fromJson, Future Function(T) update) => (oldBytes) => jsonUpdateBytes(fromJson, oldBytes, update); T Function(Object?) genericFromJson( T Function(Map) fromJsonMap) => (json) => fromJsonMap(json! as Map);