File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -186,16 +186,27 @@ class FlutterManifest {
186186 : fontList.map <Map <String , dynamic >>(castStringKeyedMap).toList ();
187187 }
188188
189- List <Uri > get assets {
189+ List <Uri > get assets => _assets ?? = _computeAssets ();
190+ List <Uri > _assets;
191+ List <Uri > _computeAssets () {
190192 final List <dynamic > assets = _flutterDescriptor['assets' ];
191193 if (assets == null ) {
192194 return const < Uri > [];
193195 }
194- return assets
195- .cast <String >()
196- .map <String >(Uri .encodeFull)
197- ? .map <Uri >(Uri .parse)
198- ? .toList ();
196+ final List <Uri > results = < Uri > [];
197+ for (Object asset in assets) {
198+ if (asset is ! String || asset == null || asset == '' ) {
199+ printError ('Asset manifest contains a null or empty uri.' );
200+ continue ;
201+ }
202+ final String stringAsset = asset;
203+ try {
204+ results.add (Uri .parse (Uri .encodeFull (stringAsset)));
205+ } on FormatException {
206+ printError ('Asset manifest contains invalid uri: $asset .' );
207+ }
208+ }
209+ return results;
199210 }
200211
201212 List <Font > _fonts;
Original file line number Diff line number Diff line change @@ -572,6 +572,26 @@ flutter:
572572 expect (flutterManifest, null );
573573 expect (logger.errorText, contains ('Expected a map.' ));
574574 });
575+
576+ testUsingContext ('Does not crash on empty entry' , () async {
577+ final BufferLogger logger = context.get <Logger >();
578+ const String manifest = '''
579+ name: test
580+ dependencies:
581+ flutter:
582+ sdk: flutter
583+ flutter:
584+ uses-material-design: true
585+ assets:
586+ - lib/gallery/example_code.dart
587+ -
588+ ''' ;
589+ final FlutterManifest flutterManifest = FlutterManifest .createFromString (manifest);
590+ final List <Uri > assets = flutterManifest.assets;
591+
592+ expect (logger.errorText, contains ('Asset manifest contains a null or empty uri.' ));
593+ expect (assets.length, 1 );
594+ });
575595 });
576596
577597 group ('FlutterManifest with MemoryFileSystem' , () {
You can’t perform that action at this time.
0 commit comments