diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart index c45d6112120..17b728cd028 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart @@ -1033,16 +1033,18 @@ class _AssetDirectoryCache { final List entitiesInDirectory = _fileSystem.directory(directory).listSync(); + final File assetFile = _fileSystem.file(assetPath); final List pathsOfVariants = [ // It's possible that the user specifies only explicit variants (e.g. .../1x/asset.png), // so there does not necessarily need to be a file at the given path. - if (_fileSystem.file(assetPath).existsSync()) + if (assetFile.existsSync()) assetPath, ...entitiesInDirectory .whereType() .where((Directory dir) => _assetVariantDirectoryRegExp.hasMatch(dir.basename)) .expand((Directory dir) => dir.listSync()) .whereType() + .where((File file) => file.basename == assetFile.basename) .map((File file) => file.path), ]; diff --git a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart index 1b651b328c0..cd5e1b1c995 100644 --- a/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart +++ b/packages/flutter_tools/test/general.shard/asset_bundle_package_test.dart @@ -219,14 +219,18 @@ $assetsSection writePubspecFile( 'p/p/pubspec.yaml', 'test_package', - assets: ['a/foo'], + assets: ['a/foo', 'a/bar'], ); - final List assets = ['a/foo', 'a/2x/foo']; + final List assets = ['a/foo', 'a/2x/foo', 'a/bar']; writeAssets('p/p/', assets); - const String expectedManifest = '{"packages/test_package/a/foo":' - '["packages/test_package/a/foo","packages/test_package/a/2x/foo"]}'; + const String expectedManifest = '{' + '"packages/test_package/a/bar":' + '["packages/test_package/a/bar"],' + '"packages/test_package/a/foo":' + '["packages/test_package/a/foo","packages/test_package/a/2x/foo"]' + '}'; await buildAndVerifyAssets( assets,