[file_selector] Add macOS support (#4381)

Brings file_selector_macos into flutter/plugins from FDE, with the following changes:
- Refactored slightly to allow for unit tests of almost all of the native code
- Added native unit test coverage
- Translated to Swift, to follow repo conventions for macOS plugins
- Added an in-package example (almost an exact duplicate of the app-facing version, but written against the platform interface, as is our current practice)
- Moved to an in-package method channel. As part of that, moved the flattening of type groups from Swift to Dart.

Does not currently include native UI tests to allow for end-to-end testing (since Flutter integration tests can't be used). They should be added later (they are currently blocked on https://github.com/flutter/flutter/issues/90673), but the unit tests give substantial coverage, making it substantially better to move the plugin now to get those tests running.

macOS portion of https://github.com/flutter/flutter/issues/70221
53 files changed
tree: bc742ecb9fc6213c9eefe70a913c013110664235
  1. .ci/
  2. .github/
  3. .opensource/
  4. packages/
  5. script/
  6. .ci.yaml
  7. .cirrus.yml
  8. .clang-format
  9. .gitattributes
  10. .gitignore
  11. analysis_options.yaml
  12. analysis_options_legacy.yaml
  13. AUTHORS
  14. CODEOWNERS
  15. CONTRIBUTING.md
  16. FlutterFire.md
  17. LICENSE
  18. README.md
README.md

Flutter plugins

Build Status Release Status

This repo is a companion repo to the main flutter repo. It contains the source code for Flutter first-party plugins (i.e., plugins developed by the core Flutter team). Check the packages directory for all plugins.

Flutter plugins enable access to platform-specific APIs. For more information about plugins, and how to use them, see https://flutter.dev/platform-plugins/.

These plugins are also available on pub.

Issues

Please file any issues, bugs, or feature requests in the main flutter repo.

Issues pertaining to this repository are labeled “plugin”.

Contributing

If you wish to contribute a new plugin to the Flutter ecosystem, please see the documentation for developing packages and platform channels. You can store your plugin source code in any GitHub repository (the present repo is only intended for plugins developed by the core Flutter team). Once your plugin is ready, you can publish it to the pub repository.

If you wish to contribute a change to any of the existing plugins in this repo, please review our contribution guide, and send a pull request.

Plugins

These are the available plugins in this repository.

PluginPubPointsPopularityLikes
camerapub packagepub pointspopularitylikes
espressopub packagepub pointspopularitylikes
file_selectorpub packagepub pointspopularitylikes
flutter_plugin_android_lifecyclepub packagepub pointspopularitylikes
google_maps_flutterpub packagepub pointspopularitylikes
google_sign_inpub packagepub pointspopularitylikes
image_pickerpub packagepub pointspopularitylikes
in_app_purchasepub packagepub pointspopularitylikes
ios_platform_imagespub packagepub pointspopularitylikes
local_authpub packagepub pointspopularitylikes
path_providerpub packagepub pointspopularitylikes
plugin_platform_interfacepub packagepub pointspopularitylikes
quick_actionspub packagepub pointspopularitylikes
shared_preferencespub packagepub pointspopularitylikes
url_launcherpub packagepub pointspopularitylikes
video_playerpub packagepub pointspopularitylikes
webview_flutterpub packagepub pointspopularitylikes