Commonly used packages

This page lists some of the most popular and usefulpackages that Dart developers have published.To find more packages —and search core libraries, as well —use the pub.dev site.

Commonly used packages fall into three groups:

General-purpose packages

The following packages are useful for a wide range of projects.

PackageDescriptionCommonly used APIs
archiveEncodes and decodes various archive and compression formats.Archive, ArchiveFile, TarEncoder, TarDecoder, ZipEncoder, ZipDecoder
charactersString manipulation for user-perceived characters (Unicode grapheme clusters).String.characters, Characters, CharacterRange
httpA set of high-level functions and classes that make it easy to consume HTTP resources.delete(), get(), post(), read()
intlInternationalization and localization facilities, with support for plurals and genders, date and number formatting and parsing, and bidirectional text.Bidi, DateFormat, MicroMoney, TextDirection
json_serializableAn easy-to-use code generation package. For more information, see JSON Support.@JsonSerializable
loggingA configurable mechanism for adding message logging to your application.LoggerHandler, Level, LogRecord
mockitoA popular framework for mocking objects in tests. Especially useful if you are writing tests for dependency injection. Used with the test package.Answering, Expectation, Verification
pathCommon operations for manipulating different types of paths. For more information, see Unboxing Packages: path.absolute(), basename(), extension(), join(), normalize(), relative(), split()
quiverUtilities that make using core Dart libraries more convenient. Some of the libraries where Quiver provides additional support include async, cache, collection, core, iterables, patterns, and testing.CountdownTimer (quiver.async); MapCache (quiver.cache); MultiMap, TreeSet (quiver.collection); EnumerateIterable (quiver.iterables); center(), compareIgnoreCase(), isWhiteSpace() (quiver.strings)
shelfWeb server middleware for Dart. Shelf makes it easy to create and compose web servers, and parts of web servers.Cascade, Pipeline, Request, Response, Server
stack_traceMethods for parsing, inspecting, and manipulating stack traces produced by the underlying Dart implementation. Also provides functions to produce string representations of stack traces in a more readable format than the native StackTrace implementation. For more information, see Unboxing Packages: stack_trace.Trace.current(), Trace.format(), Trace.from()
stagehandA Dart project generator. WebStorm and IntelliJ use Stagehand templates when you create a new application, but you can also use the templates from the command line.Generally used through an IDE or the stagehand command.
testA standard way of writing and running tests in Dart.expect(), group(), test()
yamlA parser for YAML.loadYaml(), loadYamlStream()

Packages that expand on Dart core libraries

Each of the following packages builds upon a core library,adding functionality and filling in missing features:

PackageDescriptionCommonly used APIs
asyncExpands on dart:async, adding utility classes to work with asynchronous computations. For more information, see Unboxing Packages: async part 1, part 2, and part 3.AsyncMemoizer, CancelableOperation, FutureGroup, LazyStream, Result, StreamCompleter, StreamGroup, StreamSplitter
collectionExpands on dart:collection, adding utility functions and classes to make working with collections easier. For more information, see Unboxing Packages: collection.Equality, CanonicalizedMap, MapKeySet, MapValueSet, PriorityQueue, QueueList
convertExpands on dart:convert, adding encoders and decoders for converting between different data representations. One of the data representations is percent encoding, also known as URL encoding.HexDecoder, PercentDecoder
ioContains two libraries, ansi and io, to simplify working with files, standard streams, and processes. Use the ansi library to customize terminal output. The io library has APIs for dealing with processes, stdin, and file duplication.copyPath(), isExecutable(), ExitCode, ProcessManager, sharedStdIn

Specialized packages

Here are some tips for finding packages that are more specialized,such as packages for mobile (Flutter) and web development.

Flutter packages

See Using packageson the Flutter site.Or use the pub.dev site to search for Flutter packages.

Web packages

See Web libraries and packages.Or use the pub.dev site to search for web packages.

Command-line and server packages

See Command-line and server libraries and packages.Or use the pub.dev site to search for other packages.