Fix `pub get --unknown-flag` (#119622)

diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart
index b65e317..448bbbe 100644
--- a/packages/flutter_tools/lib/src/commands/packages.dart
+++ b/packages/flutter_tools/lib/src/commands/packages.dart
@@ -213,6 +213,7 @@
     argParser.addOption('git-ref');
     argParser.addOption('git-path');
     argParser.addFlag('dev');
+    argParser.addFlag('verbose', abbr: 'v');
     return argParser;
   }
 
@@ -238,7 +239,11 @@
     FlutterProject? rootProject;
 
     if (!isHelp) {
-      if (directoryOption == null && rest.length == 1 &&
+      if (directoryOption == null &&
+          rest.length == 1 &&
+          // Anything that looks like an argument should not be interpreted as
+          // a directory.
+          !rest.single.startsWith('-') &&
           ((rest.single.contains('/') || rest.single.contains(r'\')) ||
             name == 'get')) {
         // For historical reasons, if there is one argument to the command and it contains
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
index 14a5ac0..657adfd 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/pub_get_test.dart
@@ -94,6 +94,32 @@
     FileSystem: () => fileSystem,
   });
 
+  testUsingContext("pub get doesn't treat unknown flag as directory", () async {
+    fileSystem.currentDirectory.childDirectory('target').createSync();
+    fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
+    final PackagesGetCommand command = PackagesGetCommand('get', '', PubContext.pubGet);
+    final CommandRunner<void> commandRunner = createTestCommandRunner(command);
+    pub.expectedArguments = <String>['get', '--unknown-flag', '--example', '--directory', '.'];
+    await commandRunner.run(<String>['get', '--unknown-flag']);
+  }, overrides: <Type, Generator>{
+    Pub: () => pub,
+    ProcessManager: () => FakeProcessManager.any(),
+    FileSystem: () => fileSystem,
+  });
+
+    testUsingContext("pub get doesn't treat -v as directory", () async {
+    fileSystem.currentDirectory.childDirectory('target').createSync();
+    fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
+    final PackagesGetCommand command = PackagesGetCommand('get', '', PubContext.pubGet);
+    final CommandRunner<void> commandRunner = createTestCommandRunner(command);
+    pub.expectedArguments = <String>['get', '-v', '--example', '--directory', '.'];
+    await commandRunner.run(<String>['get', '-v']);
+  }, overrides: <Type, Generator>{
+    Pub: () => pub,
+    ProcessManager: () => FakeProcessManager.any(),
+    FileSystem: () => fileSystem,
+  });
+
   testUsingContext("pub get skips example directory if it doesn't contain a pubspec.yaml", () async {
     fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
     fileSystem.currentDirectory.childDirectory('example').createSync(recursive: true);
@@ -181,6 +207,7 @@
   FakePub(this.fileSystem);
 
   final FileSystem fileSystem;
+  List<String>? expectedArguments;
 
   @override
   Future<void> interactively(
@@ -192,6 +219,9 @@
     bool generateSyntheticPackage = false,
     PubOutputMode outputMode = PubOutputMode.all,
   }) async {
+    if (expectedArguments != null) {
+      expect(arguments, expectedArguments);
+    }
     if (project != null) {
       fileSystem.directory(project.directory)
         .childDirectory('.dart_tool')