tree 4b96e20ba779240f65d3543fa56147c8155d96ab
parent f9daa9aac4b8c801359b3c7a194d490bebcc2016
author Andrew Kolos <andrewrkolos@gmail.com> 1675351035 -0500
committer GitHub <noreply@github.com> 1675351035 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJj29P7CRBK7hj4Ov3rIwAACTUIAG93pV2aX64JqpMxEUrx7ZA7
 RFRz7qiVcnXKnPD+LmzBg3Z83CxRI/oBHfnPdNoOO66Ak8Q7ha82eP8UGNkiutrj
 yMFel5Gjnl8mcU4mnTPklLWM4hu6Jn0+eqcRXPvbNtF3a07KOeiV4x6Gb1r1tsxE
 mvLKuyyJOEo9WsUGsN5e2Y1KHNsvO1jhdrri6/azsIN/jQCZLoYCzedhFah5IjNj
 7xb6SQkDrC3CmRj/XiJSIILnZvaT1o7XQOvwtHRDgJKle9wE4B4f0rOzRrDVr+hO
 l+SG3V7frSvEhIpPfMNAuIM+TDkmAabudsEkUyOlnzxPyUWUxPB0WIr3L4Hjez4=
 =Y0bH
 -----END PGP SIGNATURE-----
 

Reland "Add API for discovering assets" (#119277)

* add asset manifest bin loading and asset manifest api

* use new api for image resolution

* remove upfront smc data casting

* fix typecasting issue

* remove unused import

* fix tests

* lints

* lints

* fix import

* revert image resolution changes

* Update image_resolution_test.dart

* Update decode_and_parse_asset_manifest.dart

* make targetDevicePixelRatio optional

* Update packages/flutter/lib/src/services/asset_manifest.dart

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* Update packages/flutter/lib/src/services/asset_manifest.dart

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* fix immutable not being imported

* return List in AssetManifest methods, fix annotation import

* simplify onError callback

* make AssetManifest methods abstract instead of throwing UnimplementedError

* simplify AssetVariant.key docstring

* tweak _AssetManifestBin docstring

* make AssetManifest and AssetVariant doc strings more specific

* use List.of instead of List.from for type-safety

* adjust import

* change _AssetManifestBin comment from doc comment to normal comment

* revert to callback function for onError in loadStructuredBinaryData

* add more to the docstring of AssetManifest.listAssets and AssetVariant.key

* add tests for CachingAssetBundle caching behavior

* add simple test to ensure loadStructuredBinaryData correctly calls load

* Update asset_manifest.dart

* update docstring for AssetManifest.getAssetVariants

* rename getAssetVariants, have it include main asset

* rename isMainAsset field of AssetMetadata to main

* (slightly) shorten name of describeAssetAndVariants

* rename describeAssetVariants back to getAssetVariants

* add tests for TestAssetBundle

* nits

* fix typo in docstring

* remove no longer necessary non-null asserts

* update gallery and google_fonts versions

---------

Co-authored-by: Jonah Williams <jonahwilliams@google.com>