implicit-casts:false on flutter_tools (#45153)

* implicit-casts:false on flutter_tools

* use castStringKeyedMap

* address review comments

* address review comments

* fix issues after rebase
diff --git a/packages/flutter_tools/test/general.shard/emulator_test.dart b/packages/flutter_tools/test/general.shard/emulator_test.dart
index 7e6d389..49a963e 100644
--- a/packages/flutter_tools/test/general.shard/emulator_test.dart
+++ b/packages/flutter_tools/test/general.shard/emulator_test.dart
@@ -129,7 +129,7 @@
       when(mockXcode.xcodeSelectPath).thenReturn('/fake/Xcode.app/Contents/Developer');
       when(mockXcode.getSimulatorPath()).thenAnswer((_) => '/fake/simulator.app');
       when(mockProcessManager.run(any)).thenAnswer((Invocation invocation) async {
-        final List<String> args = invocation.positionalArguments[0];
+        final List<String> args = invocation.positionalArguments[0] as List<String>;
         if (args.length >= 3 && args[0] == 'open' && args[1] == '-a' && args[2] == '/fake/simulator.app') {
           didAttemptToRunSimulator = true;
         }
@@ -206,9 +206,9 @@
     Encoding stdoutEncoding = systemEncoding,
     Encoding stderrEncoding = systemEncoding,
   }) {
-    final String program = command[0];
-    final List<String> args = command.sublist(1);
-    switch (command[0]) {
+    final String program = command[0] as String;
+    final List<String> args = command.sublist(1) as List<String>;
+    switch (program) {
       case '/usr/bin/xcode-select':
         throw ProcessException(program, args);
         break;