import 'package:spotify/spotify.dart'; extension CursorPageJson on CursorPage { static CursorPage fromJson( Map json, T Function(dynamic json) itemFromJson, ) { final metadata = Paging.fromJson(json["metadata"]); final paging = CursorPaging(); paging.cursors = Cursor.fromJson(json["metadata"])..after = json["after"]; paging.href = metadata.href; paging.itemsNative = paging.itemsNative; paging.limit = metadata.limit; paging.next = metadata.next; return CursorPage( paging, itemFromJson, ); } Map toJson() { return { "after": after, "metadata": metadata.toJson(), }; } } extension PagingToJson on Paging { Map toJson() { return { "items": itemsNative, "total": total, "next": next, "previous": previous, "limit": limit, "offset": offset, "href": href, }; } } extension PageJson on Page { static Page fromJson( Map json, T Function(dynamic json) itemFromJson, ) { return Page( Paging.fromJson( Map.castFrom(json["metadata"]), ), itemFromJson, ); } Map toJson() { return { "metadata": metadata.toJson(), }; } }