# 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/android_alarm_manager/**              @bkonyi
packages/android_intent/**                     @mklim @matthew-carroll
packages/battery/**                            @amirh @matthew-carroll
packages/camera/**                             @bparrishMines
packages/connectivity/**                       @cyanglaz @matthew-carroll
packages/device_info/**                        @matthew-carroll
packages/espresso/**                           @collinjackson @adazh
packages/file_selector/**                      @ditman
packages/google_maps_flutter/**                @cyanglaz
packages/google_sign_in/**                     @cyanglaz @mehmetf
packages/image_picker/**                       @cyanglaz
packages/integration_test/**                   @dnfield
packages/in_app_purchase/**                    @mklim @cyanglaz @LHLL
packages/ios_platform_images/**                @gaaclarke
packages/package_info/**                       @cyanglaz @matthew-carroll
packages/path_provider/**                      @matthew-carroll
packages/shared_preferences/**                 @matthew-carroll
packages/url_launcher/**                       @mklim
packages/video_player/**                       @iskakaushik @cyanglaz
packages/webview_flutter/**                    @amirh
