[flutter_tools] Don't try to run pub before the version command (#51436)

diff --git a/packages/flutter_tools/lib/src/commands/version.dart b/packages/flutter_tools/lib/src/commands/version.dart
index b70bba5..4d715a9 100644
--- a/packages/flutter_tools/lib/src/commands/version.dart
+++ b/packages/flutter_tools/lib/src/commands/version.dart
@@ -17,11 +17,17 @@
 
 class VersionCommand extends FlutterCommand {
   VersionCommand() : super() {
-    usesPubOption(hide: true);
     argParser.addFlag('force',
       abbr: 'f',
       help: 'Force switch to older Flutter versions that do not include a version command',
     );
+    // Don't use usesPubOption here. That will cause the version command to
+    // require a pubspec.yaml file, which it doesn't need.
+    argParser.addFlag('pub',
+      defaultsTo: true,
+      hide: true,
+      help: 'Whether to run "flutter pub get" after switching versions.',
+    );
   }
 
   @override
@@ -138,7 +144,7 @@
     globals.printStatus(flutterVersion.toString());
 
     final String projectRoot = findProjectRoot();
-    if (projectRoot != null && shouldRunPub) {
+    if (projectRoot != null && boolArg('pub')) {
       globals.printStatus('');
       await pub.get(
         context: PubContext.pubUpgrade,
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart
index 74596c3..482c379 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/version_test.dart
@@ -170,6 +170,17 @@
       ProcessManager: () => MockProcessManager(failGitTag: true),
       Stdio: () => mockStdio,
     });
+
+    testUsingContext('Does not run pub when outside a project', () async {
+      final VersionCommand command = VersionCommand();
+      await createTestCommandRunner(command).run(<String>[
+        'version',
+      ]);
+      expect(testLogger.statusText, equals('v10.0.0\r\nv20.0.0\n'));
+    }, overrides: <Type, Generator>{
+      ProcessManager: () => MockProcessManager(),
+      Stdio: () => mockStdio,
+    });
   });
 }