Everything that is placed in a variable is an object, and every object is an instance of a class.
Dart is strongly typed, and has type inference.
Dependencies are managed by pub
Dart uses packages to manage shared software such as libraries and tools.
Pub creates a .packages file that maps each package name that app depends on to corresponding package in system cache.
Most methods in the IO module run asynchronously.
Key classes: Future, Stream
Future represents computation that is yet available, Future returns the value opf computation when it completes sometime in the future. Futures are often used for potentially lengthy computations.
Stream provides an asynchronous sequence of data.
Stream.listen: registers callback function that runs each time more data is available.