# Below is a list of Flutter team members' GitHub handles who are
# suggested reviewers for contributions to this repository.
#
# These names are just suggestions. It is fine to have your changes
# reviewed by someone else.
#
# Use git ls-files '<pattern>' without a / prefix to see the list of matching files.

/packages/flutter_tools/templates/module/ios/ @jmagman
/packages/flutter_tools/templates/**/Podfile* @jmagman

# Working on flutter_driver improvements.
# See https://github.com/flutter/flutter/issues/148028.
/packages/flutter_driver/** @matanlurey
