tree a9fe358e47786faec6e67b977a8e1ab295bd336e
parent cef91bc73004e3bdfbd131489fd2d53027777cec
author Tarrin Neal <tarrinneal@gmail.com> 1686789245 -0700
committer GitHub <noreply@github.com> 1686789245 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkilx+CRBK7hj4Ov3rIwAAgmIIABqruwMvjpiUwzxW08HcI88F
 hTlUBOfsaUVsv9DJuyf1EV1cGKDniCndTvXB14evYk9xQF8E0L6G63SgC3+mkDmN
 Au4JsGfQLlG+d1If1k4G9NylR7o3pRTqcPT8EEzzW+b5vbuUJvFhtcW+YTeBzQSm
 KQqrJnBzlGU7KmYLIEkD5MCGgo13ny03UTtVdOlhpHk2sSi/9+5eIeC7E7xJTq2f
 VcVGKgSzsYMJIUVfnM9FUr+YAfViDp9aB1C1GY2KxOmknclDPZaKLKsdClvnhovU
 pWkt+ntTaRXgTfGZ9JaYUFvhAMgfMQM1QdLaW9+7asyvgvnguh0r7p9HPE1FlyY=
 =3/vM
 -----END PGP SIGNATURE-----
 

[image_picker] getMedia platform implementations (#4175)

Adds `getMedia` and `getMultipleMedia` methods to all image_picker
platforms.

~~waiting on https://github.com/flutter/packages/pull/4174~~

precursor to https://github.com/flutter/packages/pull/3892

part of https://github.com/flutter/flutter/issues/89159

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [relevant style guides] and ran the
auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages
repo does use `dart format`.)
- [x] I signed the [CLA].
- [x] The title of the PR starts with the name of the package surrounded
by square brackets, e.g. `[shared_preferences]`
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated `pubspec.yaml` with an appropriate new version according
to the [pub versioning philosophy], or this PR is [exempt from version
changes].
- [x] I updated `CHANGELOG.md` to add a description of the change,
[following repository CHANGELOG style].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[relevant style guides]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[pub versioning philosophy]: https://dart.dev/tools/pub/versioning
[exempt from version changes]:
https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#version-and-changelog-updates
[following repository CHANGELOG style]:
https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changelog-style
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests