# This list should be kept as short as possible, and things should remain here
# only as long as necessary, since in general the goal is for all of the latest
# versions of packages to be mutually compatible.
#
# An example use case for this list would be to temporarily add packages while
# updating multiple packages for a breaking change in a common dependency in
# cases where using a relaxed version constraint isn't possible.

# NOTE: camera_android is semi-excluded via special casing in the repo tools.
# See create_all_packages_app_command.dart.

# This is a permanent entry, as it should never be a direct app dependency.
- plugin_platform_interface
# An application cannot depend directly on multiple federated implementations
# of the same plugin for the same platform, which means the app cannot
# directly depend on both camera_android and camera_android_androidx.
# Since google_maps_flutter_ios is endorsed, it will be included transitively
# already, so exclude it from the direct dependency list to allow including
# google_maps_flutter_ios_sdk10 to ensure that they don't conflict at build
# time (if they did, it would be impossible to select the SDK-specific
# version).
- google_maps_flutter_ios
# We can't test both SDK 9 and SDK 10; use 9 (excluding everything but 9)
# so that the min iOS version of the build-all app doesn't need to be
# raised any higher than necessary.
- google_maps_flutter_ios_sdk10
