-
Notifications
You must be signed in to change notification settings - Fork 9.7k
[path_provider] Create platform interface #2553
[path_provider] Create platform interface #2553
Conversation
ditman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than the philosophical question about dart:io, this looks good!
...ges/path_provider/path_provider_platform_interface/lib/path_provider_platform_interface.dart
Outdated
Show resolved
Hide resolved
...ges/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart
Outdated
Show resolved
Hide resolved
ditman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some small tweaks that you can do here and there. Still not a fan of doing a platform check to throw an exception before calling the method channel. The native implementation should return an unimplemented exception (I'm sure it does already).
...ges/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart
Outdated
Show resolved
Hide resolved
...ges/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart
Show resolved
Hide resolved
...ges/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart
Outdated
Show resolved
Hide resolved
...ges/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart
Outdated
Show resolved
Hide resolved
| if (!_platform.isMacOS) { | ||
| throw UnsupportedError('Functionality only available on macOS'); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment I did in your previous platform interface migration. IMO this should be thrown by the Java side (I don't know what to do with the 'getDownloadsDirectory' call, and not in the MethodChannel implementation).
If the Fuchsia version is able to fulfill this, this'd be throwing an exception before it even reaches native code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I follow. I'm keeping it here to make sure it's as similar to the current implementation as possible. I think you are right about the fact that the native side would just return MissingImplementation. I think if we want that exception as opposed to the UnsupportedError that might be a bigger discussion to be consistent with the rest of the plugins.
What do you mean by the fuchsia version example? In theory, nothing other than macOS should reach the native code. Maybe that's why the platform checks were added? To save some calls if we know they are going to fail? Also, maybe for testing :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's agree to disagree :P
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Description
Creates a platform_interface for path_provider. Second step for federation outlined in flutter/flutter#46307 (comment)
Related Issues
flutter/flutter#46307
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]). This will ensure a smooth and quick review process.///).flutter analyze) does not report any problems on my PR.Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?