diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart index 871c882ee9..c5716affff 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart @@ -107,6 +107,10 @@ class _ManifestAssetBundle implements AssetBundle { if (flutterManifest == null) return 1; + // If the last build time isn't set before this early return, empty pubspecs will + // hang on hot reload, as the incremental dill files will never be copied to the + // device. + _lastBuildTimestamp = DateTime.now(); if (flutterManifest.isEmpty) { entries[_assetManifestJson] = DevFSStringContent('{}'); return 0; @@ -114,8 +118,6 @@ class _ManifestAssetBundle implements AssetBundle { final String assetBasePath = fs.path.dirname(fs.path.absolute(manifestPath)); - _lastBuildTimestamp = DateTime.now(); - final PackageMap packageMap = PackageMap(packagesPath); // The _assetVariants map contains an entry for each asset listed diff --git a/packages/flutter_tools/test/asset_test.dart b/packages/flutter_tools/test/asset_test.dart index c681ca562d..bb8f2598e3 100644 --- a/packages/flutter_tools/test/asset_test.dart +++ b/packages/flutter_tools/test/asset_test.dart @@ -41,8 +41,26 @@ void main() { await getValueAsString('FontManifest.json', asset), '[{"family":"packages/font/test_font","fonts":[{"asset":"packages/font/test_font_file"}]}]', ); + expect(asset.wasBuiltOnce(), true); }); + testUsingContext('handles empty pubspec with .packages', () async { + final String dataPath = fs.path.join( + getFlutterRoot(), + 'packages', + 'flutter_tools', + 'test', + 'data', + 'fuchsia_test', + ); + final AssetBundle asset = AssetBundleFactory.instance.createBundle(); + await asset.build( + manifestPath : fs.path.join(dataPath, 'main', 'pubspec.yaml'), // file doesn't exist + packagesPath: fs.path.join(dataPath, 'main', '.packages'), + includeDefaultFonts: false, + ); + expect(asset.wasBuiltOnce(), true); + }); }); } diff --git a/packages/flutter_tools/test/data/fuchsia_test/main/.gitignore b/packages/flutter_tools/test/data/fuchsia_test/main/.gitignore new file mode 100644 index 0000000000..6265676b30 --- /dev/null +++ b/packages/flutter_tools/test/data/fuchsia_test/main/.gitignore @@ -0,0 +1 @@ +!.packages \ No newline at end of file diff --git a/packages/flutter_tools/test/data/fuchsia_test/main/.packages b/packages/flutter_tools/test/data/fuchsia_test/main/.packages new file mode 100644 index 0000000000..9882eb023e --- /dev/null +++ b/packages/flutter_tools/test/data/fuchsia_test/main/.packages @@ -0,0 +1 @@ +testo:lib/ \ No newline at end of file