# 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/css_colors/**                                   @stuartmorgan
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/**                                @chunhtai
packages/flutter_markdown/**                             @domesticmouse
packages/flutter_migrate/**                              @stuartmorgan
packages/flutter_template_images/**                      @stuartmorgan
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
packages/google_sign_in/**                               @stuartmorgan
packages/image_picker/**                                 @tarrinneal
packages/interactive_media_ads/**                        @bparrishMines
packages/in_app_purchase/**                              @bparrishMines
packages/local_auth/**                                   @stuartmorgan
packages/metrics_center/**                               @christopherfujino
packages/multicast_dns/**                                @vashworth
packages/palette_generator/**                            @gspencergoog
packages/path_provider/**                                @stuartmorgan
packages/pigeon/**                                       @tarrinneal
packages/platform/**                                     @stuartmorgan
packages/plugin_platform_interface/**                    @stuartmorgan
packages/pointer_interceptor/**                          @ditman
packages/process/**                                      @stuartmorgan
packages/quick_actions/**                                @bparrishMines
packages/rfw/**                                          @Hixie
packages/shared_preferences/**                           @tarrinneal
packages/standard_message_codec/**                       @jonahwilliams
packages/two_dimensional_scrollables/**                  @Piinks
packages/url_launcher/**                                 @stuartmorgan
packages/vector_graphics/**                              @jonahwilliams
packages/vector_graphics_codec/**                        @jonahwilliams
packages/vector_graphics_compiler/**                     @jonahwilliams
packages/video_player/**                                 @tarrinneal
packages/web_benchmarks/**                               @yjbanov
packages/webview_flutter/**                              @bparrishMines
packages/xdg_directories/**                              @stuartmorgan
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/**                                     @reidbaker
packages/file_selector/file_selector_android/**          @gmackall
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 @matanlurey
# Owned by ecosystem team for now during the wrapper evaluation.
packages/webview_flutter/webview_flutter_android/**      @bparrishMines

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

# - Linux
packages/file_selector/file_selector_linux/**            @cbracken
packages/image_picker/image_picker_linux/**              @cbracken
packages/path_provider/path_provider_linux/**            @cbracken
packages/shared_preferences/shared_preferences_linux/**  @cbracken
packages/url_launcher/url_launcher_linux/**              @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

# - 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
