# 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_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_fonts/**                                 @Piinks
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/mustache_template/**                @bkonyi @parlough
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
