Path provider windows crash fix (#3814)

Failures to get a known folder that don't throw Windows exceptions need
to return null.

Fixes flutter/flutter#80712
diff --git a/packages/path_provider/path_provider_windows/CHANGELOG.md b/packages/path_provider/path_provider_windows/CHANGELOG.md
index ca46214..02c3b23 100644
--- a/packages/path_provider/path_provider_windows/CHANGELOG.md
+++ b/packages/path_provider/path_provider_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.0.1
+
+* Fix a crash when a known folder can't be located.
+
 ## 2.0.0
 
 * Migrate to null safety
diff --git a/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart b/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
index 13841a0..9719673 100644
--- a/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
+++ b/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
@@ -88,7 +88,11 @@
 
   @override
   Future<String?> getApplicationSupportPath() async {
-    final String appDataRoot = await getPath(WindowsKnownFolder.RoamingAppData);
+    final String? appDataRoot =
+        await getPath(WindowsKnownFolder.RoamingAppData);
+    if (appDataRoot == null) {
+      return null;
+    }
     final Directory directory = Directory(
         path.join(appDataRoot, _getApplicationSpecificSubdirectory()));
     // Ensure that the directory exists if possible, since it will on other
@@ -114,7 +118,7 @@
   ///
   /// folderID is a GUID that represents a specific known folder ID, drawn from
   /// [WindowsKnownFolder].
-  Future<String> getPath(String folderID) {
+  Future<String?> getPath(String folderID) {
     final Pointer<Pointer<Utf16>> pathPtrPtr = calloc<Pointer<Utf16>>();
     final Pointer<GUID> knownFolderID = calloc<GUID>()..ref.setGUID(folderID);
 
@@ -130,6 +134,7 @@
         if (hr == E_INVALIDARG || hr == E_FAIL) {
           throw WindowsException(hr);
         }
+        return Future<String?>.value(null);
       }
 
       final String path = pathPtrPtr.value.toDartString();
diff --git a/packages/path_provider/path_provider_windows/pubspec.yaml b/packages/path_provider/path_provider_windows/pubspec.yaml
index d152869..95d9f5d 100644
--- a/packages/path_provider/path_provider_windows/pubspec.yaml
+++ b/packages/path_provider/path_provider_windows/pubspec.yaml
@@ -1,7 +1,7 @@
 name: path_provider_windows
 description: Windows implementation of the path_provider plugin
 homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_windows
-version: 2.0.0
+version: 2.0.1
 
 flutter:
   plugin: