Packages are used in Dart to handle shared software like libraries and tools. These packages are published to Dart Pub and managed by Pub. Packages make code reusability and sharing easier.
In Dart, every pub package needs specific metadata to define its dependencies. This metadata is contained in a pubspec file.
A pubspec file is a YAML-coded file with the name pubspec.yaml which contains all the package metadata, fonts, and image files.
The following properties can be included in a pubspec file:
nameThe name property represents the package name. Dart packages must follow the naming convention for Dart identifiers such as:
For instance:
name: dropdown_menu
versionThe version property represents the package version. When hosting a package on the pub.dev website, a version number is necessary, however, local-only packages do not need to include one. If we don’t include it, our package’s version is automatically set to 0.0.0.
For instance:
version: 1.0.3
descriptionThe description property gives an explanation about the package.
For instance:
description: >-
  Are you tired of creating dropdown from scratch?  
  This package can help build a dropdown and you can customize it as you wish.
repositoryThe repository property is optional. This represents the URL pointing to the package’s source code.
For instance:
repository: https://github.com/maria/dropdown-menu/
homepageThe homepage property is optional. It represents the URL pointing to the package’s homepage.
For instance:
homepage: https://example-widget.com/dropdown
issue_trackerThe issue_tracker property is also optional and it represents the URL for the package’s issue tracker, where existing bugs can be read and new bugs can be reported.
For instance:
issue_tracker: https://github.com/maria/dropdown/issues
documentationThe documentation property is also optional and it includes the  URL for
package’s documentation.
For instance:
documentation: https://example-widget.com/dropdown-docs
dependenciesThe dependencies property includes the dependencies used. It can be ignored if the package has no dependencies.
For instance:
dependencies:
  bits: ^0.0.4
dev_dependenciesThis contains the dev dependencies used. It can be ignored if the package has no dev dependencies. For instance:
dev_dependencies:
  flutter_test:
    sdk: flutter
environmentThis includes the SDK constraint. For instance:
environment:
  sdk: '>=2.10.0 <3.0.0'
platformsThis is optional. It specifies the supported platforms on the pub.dev site.
For instance:
# This package supports all platforms listed below.
platforms:
  android:
  ios:
  linux:
  macos:
  web:
  windows:
fundingThe funding property is optional. This includes a list of URLs where users can support the package’s development.
For instance:
funding:
 - https://www.buymeacoffee.com/my-user
 - https://www.patreon.com/my-user
false_secretsThe false_secrets property is optional. This includes the files to ignore when performing a pre-publishing search for potential leaks of secrets.
For instance:
false_secrets:
 - /lib/src/hardcoded_api_key.dart
 - /test/localhost_certificates/*.pem
Note: The first time you create a new Flutter project, a simple
pubspecfile is generated. It is at the top of the project tree and contains information that the Dart and Flutter tooling needs to know about the project.
pubspec.yaml fileHere is a complete pubspec.yaml file:
name: dropdown_menudescription: Are you tired of creating dropdown from scratch?This package can help build a dropdown and you can customize it as you wish.# The following line prevents the package from being accidentally published to# pub.dev using `pub publish`. This is preferred for private packages.publish_to: "none" # Remove this line if you wish to publish to pub.dev# The following defines the version and build number for your application.# A version number is three numbers separated by dots, like 1.2.43# followed by an optional build number separated by a +.# Both the version and the builder number may be overridden in flutter# build by specifying --build-name and --build-number, respectively.# In Android, build-name is used as versionName while build-number used as versionCode.# Read more about Android versioning at https://developer.android.com/studio/publish/versioning# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.# Read more about iOS versioning at# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.htmlversion: 1.0.0environment:sdk: ">=2.12.0 <3.0.0"repository: https://github.com/maria/dropdown-menu/homepage: https://example-widget.com/dropdownfunding:- https://www.buymeacoffee.com/my-user- https://www.patreon.com/my-user# This package supports all platforms listed below.platforms:android:ios:linux:macos:web:windows:false_secrets:- /lib/src/hardcoded_api_key.dart- /test/localhost_certificates/*.pemdependencies:cupertino_icons: ^1.0.2device_info: ^2.0.2bits: ^0.04dev_dependencies:flutter_test:sdk: flutter# For information on the generic Dart part of this file, see the# following page: https://dart.dev/tools/pub/pubspec# The following section is specific to Flutter.flutter:# The following line ensures that the Material Icons font is# included with your application, so that you can use the icons in# the material Icons class.uses-material-design: true# To add assets to your application, add an assets section, like this:assets:- assets/# An image asset can refer to one or more resolution-specific "variants", see# https://flutter.dev/assets-and-images/#resolution-aware.# For details regarding adding assets from package dependencies, see# https://flutter.dev/assets-and-images/#from-packages# To add custom fonts to your application, add a fonts section here,# in this "flutter" section. Each entry in this list should have a# "family" key with the font family name, and a "fonts" key with a# list giving the asset and other descriptors for the font. For# example:# 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## For details regarding fonts from package dependencies,# see https://flutter.dev/custom-fonts/#from-packages
Step 1: Open the pubspec.yaml file in a Flutter project.
Step 2: Add the package to the dependencies.
For instance, assuming we want to use the like_button package:
dependencies:
  like_button: ^2.0.5
Step 3: In the terminal, run flutter pub get
or click Packages get in  Android Studio or IntelliJ.
Free Resources