From 4260fe49ef6d3d2f644b7d5feb4b2b48e2996831 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Tue, 20 Apr 2021 13:36:49 -0400 Subject: [PATCH 1/2] [path_provider] Add missing early return in path_provider_windows Failures to get a known folder that don't throw Windows exceptions need to return null. Fixes flutter/flutter#80712 --- .../lib/src/path_provider_windows_real.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 13841a058638..971967373438 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 @@ class PathProviderWindows extends PathProviderPlatform { @override Future 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 @@ class PathProviderWindows extends PathProviderPlatform { /// /// folderID is a GUID that represents a specific known folder ID, drawn from /// [WindowsKnownFolder]. - Future getPath(String folderID) { + Future getPath(String folderID) { final Pointer> pathPtrPtr = calloc>(); final Pointer knownFolderID = calloc()..ref.setGUID(folderID); @@ -130,6 +134,7 @@ class PathProviderWindows extends PathProviderPlatform { if (hr == E_INVALIDARG || hr == E_FAIL) { throw WindowsException(hr); } + return Future.value(null); } final String path = pathPtrPtr.value.toDartString(); From 392540548d3873b9b26351df74de2b6588212bc2 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Tue, 20 Apr 2021 13:41:03 -0400 Subject: [PATCH 2/2] Bump version --- packages/path_provider/path_provider_windows/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider_windows/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/path_provider/path_provider_windows/CHANGELOG.md b/packages/path_provider/path_provider_windows/CHANGELOG.md index ca4621471891..02c3b2300fc0 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/pubspec.yaml b/packages/path_provider/path_provider_windows/pubspec.yaml index d152869f197d..95d9f5dc8f61 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: