Skip to content

[flutter_tools] _InternalLinkedHashMap<String, dynamic> is not a subtype of type Map<String, Object> in type cast #107647

@dnys1

Description

@dnys1

I'm embedding flutter_tools in a CLI app in order to capture the pub get logic and running into a Map cast issue for packages which contain generate: true in their pubspec.yaml, triggering a localizations build.

The issue is a cast of jsonDecode output to Map<String, Object> in a null-safe library (build_system/targets/localizations.dart).

Screen Shot 2022-07-14 at 6 20 42 AM

Steps to Reproduce

I'm not sure why running flutter pub get does not produce the same issue, but it's only reproducible for me when embedding.

Embedding code

My embedding code looks something like this:

import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/template.dart';
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/commands/packages.dart';
import 'package:flutter_tools/src/context_runner.dart' as flutter;
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/isolated/mustache_template.dart';
import 'package:flutter_tools/src/runner/flutter_command_runner.dart';

await flutter.runInContext(
  () async {
    final runner = FlutterCommandRunner()
      ..addCommand(
        PackagesGetCommand(action.name, action == PubAction.upgrade),
      );
    await runner.run([action.name, package.path]);
  },
  overrides: {
    Pub: () => _FlutterPub(
          package: package,
          verbose: verbose,
          pubRunner: pubRunner,
        ),
    TemplateRenderer: () => const MustacheTemplateRenderer(),
  },
);
Logs
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, Object>' in type cast
#0      GenerateLocalizationsTarget.build (package:flutter_tools/src/build_system/targets/localizations.dart:66:7)
#1      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:839:27)
<asynchronous suspension>
#2      FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:606:16)
<asynchronous suspension>
#3      generateLocalizationsSyntheticPackage (package:flutter_tools/src/dart/generate_synthetic_packages.dart:58:30)
<asynchronous suspension>
#4      PackagesGetCommand._runPubGet (package:flutter_tools/src/commands/packages.dart:131:7)
<asynchronous suspension>
#5      PackagesGetCommand.runCommand (package:flutter_tools/src/commands/packages.dart:180:7)
<asynchronous suspension>
#6      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1209:27)
<asynchronous suspension>
#7      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#8      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#9      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
<asynchronous suspension>
#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#11     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
<asynchronous suspension>

Metadata

Metadata

Assignees

No one assigned

    Labels

    r: timeoutIssue is closed due to author not providing the requested details in time

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions