Dart learning

Learning about the Dart language by making some example applications in it.

Set up the project

  1. Make sure you have Dart installed
  2. Run pub get to download dependencies
  3. Start the console app with pub run bin/console_app.dart
    • Or (because the package name is console_app, you can just run pub run console_app)
    • You can also run a dart file with dart bin/console_app.dart

Key points

  • pub is a a CLI tool for managing dependencies in Dart projects
  • pubspec.yaml is the package.json of Dart projects i.e. manifest file
  • In order to add a dependency, you must manually edit pubspec.yaml and add the package at the specified version range to the desired dependencies list
  • Dart comes with a linter. It's configured in analysis_options.yaml
  • Dart is a strongly-typed language like Java or C#. There are many in-built types like List<T> or Map<String, int>. See Dart's Language tour for details of every feature the language has (many).
  • Dart has no private or public keywords - it instead uses a convention-based a approach. A leading underscore for private members e.g. _handleError will not be available outside of the file they are declared in.
  • stagehand is a CLI tool for generating Dart projects
  • Dart projects make a distinction between Application packages and Library packages
    • An Application package is a standalone application that you run e.g. some website you made or a CLI tool
    • A Library package is a package to be referenced by other packages i.e. it is intended to be a dependency - it won't have any main() function.
  • Dart projects have a bit of a peculiar structure to them
    • "Application packages" usually still have a "Library package" where most of your code will live i.e. your package will import and use itself
    • bin/ Your executables will live here (for Application packages mostly)
    • lib/ The source code for your "Library" (even if you are writing an Application package)
      • This will usually contain a top-level file that represents your Library's public API - it will export all the members from within your package
      • lib/src/ The actual source code for your package
    • example/ Examples of how to use your package
    • test/ Tests
    • doc/ Package documentation often generated by dartdoc
    • tools/ For scripts and things
    • For full details see Package layout conventions

Libraries

console_app
A sample application that cats files and implements some basic command line flags
web_server
A sample web server app