Add boxes around version freshness alerts (#96152)

diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart
index ec86fc4..42a2e54 100644
--- a/packages/flutter_tools/lib/src/version.dart
+++ b/packages/flutter_tools/lib/src/version.dart
@@ -879,7 +879,7 @@
     final String updateMessage;
     switch (remoteVersionStatus) {
       case VersionCheckResult.newVersionAvailable:
-        updateMessage = newVersionAvailableMessage();
+        updateMessage = _newVersionAvailableMessage;
         break;
       case VersionCheckResult.versionIsCurrent:
       case VersionCheckResult.unknown:
@@ -887,7 +887,7 @@
         break;
     }
 
-    logger.printStatus(updateMessage, emphasis: true);
+    logger.printBox(updateMessage);
     await Future.wait<void>(<Future<void>>[
       stamp.store(
         newTimeWarningWasPrinted: now,
@@ -900,26 +900,13 @@
 
 @visibleForTesting
 String versionOutOfDateMessage(Duration frameworkAge) {
-  String warning = 'WARNING: your installation of Flutter is ${frameworkAge.inDays} days old.';
-  // Append enough spaces to match the message box width.
-  warning += ' ' * (74 - warning.length);
-
   return '''
-╔════════════════════════════════════════════════════════════════════════════╗
-║ $warning ║
-║                                                                            ║
-║ To update to the latest version, run "flutter upgrade".                    ║
-╚════════════════════════════════════════════════════════════════════════════╝
-''';
+WARNING: your installation of Flutter is ${frameworkAge.inDays} days old.
+
+To update to the latest version, run "flutter upgrade".''';
 }
 
-@visibleForTesting
-String newVersionAvailableMessage() {
-  return '''
-╔════════════════════════════════════════════════════════════════════════════╗
-║ A new version of Flutter is available!                                     ║
-║                                                                            ║
-║ To update to the latest version, run "flutter upgrade".                    ║
-╚════════════════════════════════════════════════════════════════════════════╝
-''';
-}
+const String _newVersionAvailableMessage = '''
+A new version of Flutter is available!
+
+To update to the latest version, run "flutter upgrade".''';
diff --git a/packages/flutter_tools/test/general.shard/version_test.dart b/packages/flutter_tools/test/general.shard/version_test.dart
index af66ab9..e2cb8a8 100644
--- a/packages/flutter_tools/test/general.shard/version_test.dart
+++ b/packages/flutter_tools/test/general.shard/version_test.dart
@@ -134,7 +134,7 @@
         expect(flutterVersion.getVersionString(redactUnknownBranches: true), '$channel/1234abcd');
         expect(flutterVersion.getBranchName(redactUnknownBranches: true), channel);
 
-        _expectVersionMessage('', testLogger);
+        expect(testLogger.statusText, isEmpty);
         expect(processManager.hasRemainingExpectations, isFalse);
       }, overrides: <Type, Generator>{
         FlutterVersion: () => FlutterVersion(clock: _testClock),
@@ -160,7 +160,7 @@
           latestFlutterCommitDate: getChannelOutOfDateVersion(),
         ).run();
 
-        _expectVersionMessage('', logger);
+        expect(logger.statusText, isEmpty);
       });
 
       testWithoutContext('does not ping server when version stamp is up-to-date', () async {
@@ -181,7 +181,7 @@
           latestFlutterCommitDate: getChannelUpToDateVersion(),
         ).run();
 
-        _expectVersionMessage(newVersionAvailableMessage(), logger);
+        expect(logger.statusText, contains('A new version of Flutter is available!'));
         expect(cache.setVersionStamp, true);
       });
 
@@ -204,7 +204,7 @@
           latestFlutterCommitDate: getChannelUpToDateVersion(),
         ).run();
 
-        _expectVersionMessage('', logger);
+        expect(logger.statusText, isEmpty);
       });
 
       testWithoutContext('pings server when version stamp is missing', () async {
@@ -221,7 +221,7 @@
           latestFlutterCommitDate: getChannelUpToDateVersion(),
         ).run();
 
-        _expectVersionMessage(newVersionAvailableMessage(), logger);
+        expect(logger.statusText, contains('A new version of Flutter is available!'));
         expect(cache.setVersionStamp, true);
       });
 
@@ -243,7 +243,7 @@
           latestFlutterCommitDate: getChannelUpToDateVersion(),
         ).run();
 
-        _expectVersionMessage(newVersionAvailableMessage(), logger);
+        expect(logger.statusText, contains('A new version of Flutter is available!'));
       });
 
       testWithoutContext('does not print warning when unable to connect to server if not out of date', () async {
@@ -260,7 +260,7 @@
           // latestFlutterCommitDate defaults to null because we failed to get remote version
         ).run();
 
-        _expectVersionMessage('', logger);
+        expect(logger.statusText, isEmpty);
       });
 
       testWithoutContext('prints warning when unable to connect to server if really out of date', () async {
@@ -281,7 +281,8 @@
           // latestFlutterCommitDate defaults to null because we failed to get remote version
         ).run();
 
-        _expectVersionMessage(versionOutOfDateMessage(_testClock.now().difference(getChannelOutOfDateVersion())), logger);
+        final Duration frameworkAge = _testClock.now().difference(getChannelOutOfDateVersion());
+        expect(logger.statusText, contains('WARNING: your installation of Flutter is ${frameworkAge.inDays} days old.'));
       });
 
       group('$VersionCheckStamp for $channel', () {
@@ -593,11 +594,6 @@
   });
 }
 
-void _expectVersionMessage(String message, BufferLogger logger) {
-  expect(logger.statusText.trim(), message.trim());
-  logger.clear();
-}
-
 class FakeCache extends Fake implements Cache {
   String versionStamp;
   bool setVersionStamp = false;