# Below is a list of Flutter team members who are suggested reviewers
# for contributions to plugins in this repository.
#
# These names are just suggestions. It is fine to have your changes
# reviewed by someone else.


packages/camera/**                             @bparrishMines
packages/cross_file/**                         @ditman @mvanbeusekom
packages/file_selector/**                      @ditman
packages/google_maps_flutter/**                @cyanglaz
packages/image_picker/**                       @cyanglaz
packages/integration_test/**                   @dnfield
packages/in_app_purchase/**                    @cyanglaz @LHLL
packages/ios_platform_images/**                @gaaclarke
