diff --git a/CHANGELOG.md b/CHANGELOG.md
index 558aeb1..664defd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+### 3.0.1
+
+* Added string constants for each of the supported platforms for use in switch
+  statements.
+
 ### 3.0.0
 
 * First stable null safe release.
diff --git a/lib/src/interface/platform.dart b/lib/src/interface/platform.dart
index 82c8bfe..7f9262f 100644
--- a/lib/src/interface/platform.dart
+++ b/lib/src/interface/platform.dart
@@ -11,6 +11,64 @@
   /// Creates a new [Platform].
   const Platform();
 
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is Linux.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is Linux, use [isLinux].
+  static const String linux = 'linux';
+
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is Windows.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is Windows, use [isWindows].
+  static const String windows = 'windows';
+
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is macOS.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is macOS, use [isMacOS].
+  static const String macOS = 'macos';
+
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is Android.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is Android, use [isAndroid].
+  static const String android = 'android';
+
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is iOS.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is iOS, use [isIOS].
+  static const String iOS = 'ios';
+
+  /// A string constant to compare with [operatingSystem] to see if the platform
+  /// is Fuchsia.
+  ///
+  /// Useful in case statements when switching on [operatingSystem].
+  ///
+  /// To just check if the platform is Fuchsia, use [isFuchsia].
+  static const String fuchsia = 'fuchsia';
+
+  /// A list of the possible values that [operatingSystem] can return.
+  static const List<String> operatingSystemValues = <String>[
+    linux,
+    macOS,
+    windows,
+    android,
+    iOS,
+    fuchsia,
+  ];
+
   /// The number of processors of the machine.
   int get numberOfProcessors;
 
@@ -20,6 +78,11 @@
 
   /// A string (`linux`, `macos`, `windows`, `android`, `ios`, or `fuchsia`)
   /// representing the operating system.
+  ///
+  /// The possible return values are available from [operatingSystemValues], and
+  /// there are constants for each of the platforms to use in switch statements
+  /// or conditionals (See [linux], [macOS], [windows], [android], [iOS], and
+  /// [fuchsia]).
   String get operatingSystem;
 
   /// A string representing the version of the operating system or platform.
@@ -29,22 +92,22 @@
   String get localHostname;
 
   /// True if the operating system is Linux.
-  bool get isLinux => (operatingSystem == "linux");
+  bool get isLinux => operatingSystem == linux;
 
   /// True if the operating system is OS X.
-  bool get isMacOS => (operatingSystem == "macos");
+  bool get isMacOS => operatingSystem == macOS;
 
   /// True if the operating system is Windows.
-  bool get isWindows => (operatingSystem == "windows");
+  bool get isWindows => operatingSystem == windows;
 
   /// True if the operating system is Android.
-  bool get isAndroid => (operatingSystem == "android");
+  bool get isAndroid => operatingSystem == android;
 
   /// True if the operating system is iOS.
-  bool get isIOS => (operatingSystem == "ios");
+  bool get isIOS => operatingSystem == iOS;
 
   /// True if the operating system is Fuchsia
-  bool get isFuchsia => (operatingSystem == "fuchsia");
+  bool get isFuchsia => operatingSystem == fuchsia;
 
   /// The environment for this process.
   ///
diff --git a/pubspec.yaml b/pubspec.yaml
index 5480397..480f98e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: platform
-version: 3.0.0
+version: 3.0.1
 description: A pluggable, mockable platform abstraction for Dart.
 homepage: https://github.com/google/platform.dart
 
@@ -7,4 +7,4 @@
   sdk: '>=2.12.0-0 <3.0.0'
 
 dev_dependencies:
-  test: ^1.16.0-nullsafety.1
+  test: ^1.16.8
