Every Flutter project includes a
often referred to as the pubspec.
A basic pubspec is generated when you create
a new Flutter project. It’s located at the top
of the project tree and contains metadata about
the project that the Dart and Flutter tooling
needs to know. The pubspec is written in
YAML, which is human readable, but be aware
that white space (tabs v spaces) matters.
The pubspec file specifies dependencies that the project requires, such as particular packages (and their versions), fonts, or image files. It also specifies other requirements, such as dependencies on developer packages (like testing or mocking packages), or particular constraints on the version of the Flutter SDK.
When you create a new project with the
flutter create command (or by using the
equivalent button in your IDE), it creates
a pubspec for a basic Flutter app.
Here is an example of a Flutter project pubspec file. The Flutter only fields are highlighted.
name: <project name> description: A new Flutter project. publish_to: none version: 1.0.0+1 environment: sdk: '>=3.2.0 <4.0.0' dependencies: flutter: # Required for every Flutter project sdk: flutter # Required for every Flutter project flutter_localizations: # Required to enable localization sdk: flutter # Required to enable localization cupertino_icons: ^1.0.6 # Only required if you use Cupertino (iOS style) icons dev_dependencies: flutter_test: sdk: flutter # Required for a Flutter project that includes tests flutter_lints: ^3.0.0 # Contains a set of recommended lints for Flutter code flutter: uses-material-design: true # Required if you use the Material icon font generate: true # Enables generation of localized strings from arb files assets: # Lists assets, such as image files - images/a_dot_burr.jpeg - images/a_dot_ham.jpeg fonts: # Required if your app uses custom fonts - family: Schyler fonts: - asset: fonts/Schyler-Regular.ttf - asset: fonts/Schyler-Italic.ttf style: italic - family: Trajan Pro fonts: - asset: fonts/TrajanPro.ttf - asset: fonts/TrajanPro_Bold.ttf weight: 700
Common types of assets include static data (for example, JSON files), configuration files, icons, and images (JPEG, WebP, GIF, animated WebP/GIF, PNG, BMP, and WBMP).
Besides listing the images that are included in the app package, an image asset can also refer to one or more resolution-specific “variants”. For more information, see the resolution aware section of the Assets and images page. For information on adding assets from package dependencies, see the asset images in package dependencies section in the same page.
As shown in the above example,
each entry in the fonts section should have a
family key with the font family name,
fonts key with a list specifying the
asset and other descriptors for the font.
For more information on packages, plugins, and pubspec files, see the following: