# 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/**                                   @hannah-hyj
packages/camera/**                                       @bparrishMines
packages/cross_file/**                                   @ditman
packages/extension_google_sign_in_as_googleapis_auth/**  @ditman
packages/file_selector/**                                @stuartmorgan-g
packages/flutter_lints/**                                @chunhtai
packages/flutter_migrate/**                              @stuartmorgan-g
packages/flutter_template_images/**                      @stuartmorgan-g
packages/go_router/**                                    @chunhtai
packages/go_router_builder/**                            @chunhtai
packages/google_adsense/**                               @sokoloff06 @ditman
packages/google_identity_services_web/**                 @ditman
packages/google_maps_flutter/**                          @stuartmorgan-g
packages/google_sign_in/**                               @stuartmorgan-g
packages/image_picker/**                                 @tarrinneal
packages/interactive_media_ads/**                        @bparrishMines
packages/in_app_purchase/**                              @bparrishMines
packages/local_auth/**                                   @stuartmorgan-g
packages/metrics_center/**                               @bkonyi
packages/multicast_dns/**                                @vashworth
packages/path_provider/**                                @stuartmorgan-g
packages/pigeon/**                                       @tarrinneal
packages/platform/**                                     @stuartmorgan-g
packages/plugin_platform_interface/**                    @stuartmorgan-g
packages/pointer_interceptor/**                          @ditman
packages/quick_actions/**                                @bparrishMines
packages/rfw/**                                          @Hixie
packages/shared_preferences/**                           @tarrinneal
packages/standard_message_codec/**                       @stuartmorgan-g
packages/two_dimensional_scrollables/**                  @Piinks
packages/url_launcher/**                                 @stuartmorgan-g
packages/vector_graphics/**                              @jtmcdole
packages/vector_graphics_codec/**                        @jtmcdole
packages/vector_graphics_compiler/**                     @jtmcdole
packages/video_player/**                                 @tarrinneal
packages/web_benchmarks/**                               @yjbanov
packages/webview_flutter/**                              @bparrishMines
packages/xdg_directories/**                              @stuartmorgan-g
third_party/packages/cupertino_icons/**                  @MitchellGoodwin
third_party/packages/cupertino_icons/test/goldens/**     @LongCatIsLooong
third_party/packages/flutter_svg/**                      @domesticmouse
third_party/packages/flutter_svg_test/**                 @domesticmouse
third_party/packages/path_parsing/**                     @domesticmouse

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

# - Web
packages/camera/camera_web/**                                 @ditman
packages/file_selector/file_selector_web/**                   @ditman
packages/google_maps_flutter/google_maps_flutter_web/**       @ditman
packages/google_sign_in/google_sign_in_web/**                 @ditman
packages/image_picker/image_picker_for_web/**                 @ditman
packages/pointer_interceptor/pointer_interceptor_web/**       @ditman
packages/shared_preferences/shared_preferences_web/**         @ditman
packages/url_launcher/url_launcher_web/**                     @ditman
packages/video_player/video_player_web/**                     @ditman
packages/webview_flutter/webview_flutter_web/**               @ditman

# - Android
packages/camera/camera_android/**                             @camsim99
packages/camera/camera_android_camerax/**                     @camsim99
packages/espresso/**                                          @jesswrd
packages/file_selector/file_selector_android/**               @mboetger
packages/flutter_plugin_android_lifecycle/**                  @reidbaker
packages/google_maps_flutter/google_maps_flutter_android/**   @reidbaker
packages/google_sign_in/google_sign_in_android/**             @ash2moon
packages/image_picker/image_picker_android/**                 @gmackall
packages/in_app_purchase/in_app_purchase_android/**           @gmackall
packages/local_auth/local_auth_android/**                     @mboetger
packages/path_provider/path_provider_android/**               @camsim99
packages/quick_actions/quick_actions_android/**               @ash2moon
packages/shared_preferences/shared_preferences_android/**     @jesswrd
packages/url_launcher/url_launcher_android/**                 @gmackall
packages/video_player/video_player_android/**                 @ash2moon
# Owned by ecosystem team for now during the wrapper evaluation.
packages/webview_flutter/webview_flutter_android/**           @bparrishMines

# - Darwin
packages/camera/camera_avfoundation/**                        @hellohuanlin @vashworth
packages/file_selector/file_selector_ios/**                   @vashworth
packages/file_selector/file_selector_macos/**                 @vashworth
packages/google_maps_flutter/google_maps_flutter_ios/**       @vashworth
packages/google_sign_in/google_sign_in_ios/**                 @LongCatIsLooong
packages/image_picker/image_picker_ios/**                     @vashworth @louisehsu
packages/image_picker/image_picker_macos/**                   @vashworth @louisehsu
packages/in_app_purchase/in_app_purchase_storekit/**          @louisehsu @LongCatIsLooong
packages/local_auth/local_auth_darwin/**                      @vashworth
packages/path_provider/path_provider_foundation/**            @vashworth
packages/pointer_interceptor/pointer_interceptor_ios/**       @louisehsu @hellohuanlin
packages/quick_actions/quick_actions_ios/**                   @LongCatIsLooong @hellohuanlin
packages/shared_preferences/shared_preferences_foundation/**  @tarrinneal
packages/url_launcher/url_launcher_ios/**                     @hellohuanlin @LongCatIsLooong
packages/url_launcher/url_launcher_macos/**                   @hellohuanlin @LongCatIsLooong
packages/video_player/video_player_avfoundation/**            @LongCatIsLooong @hellohuanlin
packages/webview_flutter/webview_flutter_wkwebview/**         @louisehsu

# - Linux
packages/file_selector/file_selector_linux/**                 @stuartmorgan-g
packages/image_picker/image_picker_linux/**                   @stuartmorgan-g
packages/path_provider/path_provider_linux/**                 @stuartmorgan-g
packages/shared_preferences/shared_preferences_linux/**       @stuartmorgan-g
packages/url_launcher/url_launcher_linux/**                   @stuartmorgan-g

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

# - DevTools extensions
# @adsonpleal is the actual maintainer of shared_preferences_tool but is not yet a committer, so can't be listed as the owner.
packages/shared_preferences/shared_preferences_tool/**        @tarrinneal
