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

packages/animations/**                                   @goderbauer
packages/camera/**                                       @bparrishMines
packages/cross_file/**                                   @ditman
packages/css_colors/**                                   @stuartmorgan
packages/dynamic_layouts/**                              @Piinks
packages/extension_google_sign_in_as_googleapis_auth/**  @ditman
packages/file_selector/**                                @stuartmorgan
packages/flutter_adaptive_scaffold/**                    @gspencergoog
packages/flutter_image/**                                @stuartmorgan
packages/flutter_lints/**                                @goderbauer
packages/flutter_markdown/**                             @domesticmouse
packages/flutter_migrate/**                              @GaryQian
packages/flutter_template_images/**                      @stuartmorgan
packages/go_router/**                                    @chunhtai
packages/go_router_builder/**                            @chunhtai
packages/google_identity_services_web/**                 @ditman
packages/google_maps_flutter/**                          @stuartmorgan
packages/google_sign_in/**                               @stuartmorgan
packages/image_picker/**                                 @tarrinneal
packages/in_app_purchase/**                              @bparrishMines
packages/local_auth/**                                   @stuartmorgan
packages/metrics_center/**                               @keyonghan
packages/multicast_dns/**                                @dnfield
packages/palette_generator/**                            @gspencergoog
packages/path_provider/**                                @stuartmorgan
packages/pigeon/**                                       @tarrinneal
packages/plugin_platform_interface/**                    @stuartmorgan
packages/pointer_interceptor/**                          @ditman
packages/quick_actions/**                                @bparrishMines
packages/rfw/**                                          @Hixie
packages/shared_preferences/**                           @tarrinneal
packages/standard_message_codec/**                       @jonahwilliams
packages/url_launcher/**                                 @stuartmorgan
packages/video_player/**                                 @tarrinneal
packages/web_benchmarks/**                               @yjbanov
packages/webview_flutter/**                              @bparrishMines
packages/xdg_directories/**                              @stuartmorgan
third_party/packages/cupertino_icons/**                  @jmagman

# Plugin platform implementation rules. These should stay last, since the last
# matching entry takes precedence.

# - Web
packages/**/*_web/**                                     @ditman

# - Android
packages/camera/camera_android/**                        @camsim99
packages/camera/camera_android_camerax/**                @camsim99
packages/espresso/**                                     @reidbaker
packages/flutter_plugin_android_lifecycle/**             @reidbaker
packages/google_maps_flutter/google_maps_flutter_android/**  @reidbaker
packages/google_sign_in/google_sign_in_android/**        @camsim99
packages/image_picker/image_picker_android/**            @gmackall
packages/in_app_purchase/in_app_purchase_android/**      @gmackall
packages/local_auth/local_auth_android/**                @camsim99
packages/path_provider/path_provider_android/**          @camsim99
packages/quick_actions/quick_actions_android/**          @camsim99
packages/shared_preferences/shared_preferences_android/**  @reidbaker
packages/url_launcher/url_launcher_android/**            @gmackall
packages/video_player/video_player_android/**            @camsim99

# - iOS
packages/camera/camera_avfoundation/**                   @hellohuanlin
packages/file_selector/file_selector_ios/**              @jmagman
packages/google_maps_flutter/google_maps_flutter_ios/**  @cyanglaz
packages/google_sign_in/google_sign_in_ios/**            @vashworth
packages/image_picker/image_picker_ios/**                @vashworth
packages/in_app_purchase/in_app_purchase_storekit/**     @cyanglaz
packages/ios_platform_images/ios/**                      @jmagman
packages/local_auth/local_auth_ios/**                    @louisehsu
packages/path_provider/path_provider_foundation/**       @jmagman
packages/quick_actions/quick_actions_ios/**              @hellohuanlin
packages/shared_preferences/shared_preferences_foundation/**  @cyanglaz
packages/url_launcher/url_launcher_ios/**                @jmagman
packages/video_player/video_player_avfoundation/**       @hellohuanlin
packages/webview_flutter/webview_flutter_wkwebview/**    @cyanglaz

# - Linux
packages/file_selector/file_selector_linux/**            @cbracken
packages/path_provider/path_provider_linux/**            @cbracken
packages/shared_preferences/shared_preferences_linux/**  @cbracken
packages/url_launcher/url_launcher_linux/**              @cbracken

# - macOS
packages/file_selector/file_selector_macos/**            @cbracken
packages/url_launcher/url_launcher_macos/**              @cbracken

# - Windows
packages/camera/camera_windows/**                        @cbracken
packages/file_selector/file_selector_windows/**          @cbracken
packages/image_picker/image_picker_windows/**            @cbracken
packages/local_auth/local_auth_windows/**                @cbracken
packages/path_provider/path_provider_windows/**          @cbracken
packages/shared_preferences/shared_preferences_windows/** @cbracken
packages/url_launcher/url_launcher_windows/**            @cbracken
