Optimize cocoapods logic in flutter doctor. (#25872)

diff --git a/packages/flutter_tools/lib/src/base/user_messages.dart b/packages/flutter_tools/lib/src/base/user_messages.dart
index 4e0e4a8..bfcead6 100644
--- a/packages/flutter_tools/lib/src/base/user_messages.dart
+++ b/packages/flutter_tools/lib/src/base/user_messages.dart
@@ -170,6 +170,11 @@
       '$consequence\n'
       'To install:\n'
       '$installInstructions';
+  String cocoaPodsUnknownVersion(String consequence, String upgradeInstructions) =>
+      'Unknown CocoaPods version installed.\n'
+      '$consequence\n'
+      'To upgrade:\n'
+      '$upgradeInstructions';
   String cocoaPodsOutdated(String recVersion, String consequence, String upgradeInstructions) =>
       'CocoaPods out of date ($recVersion is recommended).\n'
       '$consequence\n'
diff --git a/packages/flutter_tools/lib/src/ios/cocoapods.dart b/packages/flutter_tools/lib/src/ios/cocoapods.dart
index 26a903d..ce1cbbe 100644
--- a/packages/flutter_tools/lib/src/ios/cocoapods.dart
+++ b/packages/flutter_tools/lib/src/ios/cocoapods.dart
@@ -24,6 +24,10 @@
   Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
   For more info, see https://flutter.io/platform-plugins''';
 
+const String unknownCocoaPodsConsequence = '''
+  Flutter is unable to determine the installed CocoaPods's version.
+  Ensure that the output of 'pod --version' contains only digits and . to be recognized by Flutter.''';
+
 const String cocoaPodsInstallInstructions = '''
   brew install cocoapods
   pod setup''';
@@ -38,6 +42,8 @@
 enum CocoaPodsStatus {
   /// iOS plugins will not work, installation required.
   notInstalled,
+  /// iOS plugins might not work, upgrade recommended.
+  unknownVersion,
   /// iOS plugins will not work, upgrade required.
   belowMinimumVersion,
   /// iOS plugins may not work in certain situations (Swift, static libraries),
@@ -66,6 +72,8 @@
       return CocoaPodsStatus.notInstalled;
     try {
       final Version installedVersion = Version.parse(versionText);
+      if (installedVersion == null)
+        return CocoaPodsStatus.unknownVersion;
       if (installedVersion < Version.parse(cocoaPodsMinimumVersion))
         return CocoaPodsStatus.belowMinimumVersion;
       else if (installedVersion < Version.parse(cocoaPodsRecommendedVersion))
@@ -112,6 +120,15 @@
           emphasis: true,
         );
         return false;
+      case CocoaPodsStatus.unknownVersion:
+        printError(
+          'Warning: Unknown CocoaPods version installed.\n'
+          '$unknownCocoaPodsConsequence\n'
+          'To upgrade:\n'
+          '$cocoaPodsUpgradeInstructions\n',
+          emphasis: true,
+        );
+        break;
       case CocoaPodsStatus.belowMinimumVersion:
         printError(
           'Warning: CocoaPods minimum required version $cocoaPodsMinimumVersion or greater not installed. Skipping pod install.\n'
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index f7cdc35..98b4ef6 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -192,6 +192,11 @@
           status = ValidationType.missing;
           messages.add(ValidationMessage.error(
               userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions)));
+        }
+        else if (cocoaPodsStatus == CocoaPodsStatus.unknownVersion) {
+          status = ValidationType.partial;
+          messages.add(ValidationMessage.hint(
+              userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsUpgradeInstructions)));
         } else {
           status = ValidationType.partial;
           messages.add(ValidationMessage.hint(