Overview of darts

Dart is a client-oriented programming language that can be used to create quick apps on any device. Its purpose is to provide the most productive programming language for cross-platform development, as well as a versatile execution platform for app frameworks.

The technical envelope of a language — the decisions made during development that influence the language's core competencies — defines it. Dart is optimized for client development, prioritizing both development (sub-second stateful hot reload) and high-quality production experiences across a wide range of compilation goals (web, mobile, and desktop).

Dart is also the backbone of Flutter. Dart not only powers Flutter apps with its language and runtimes, but it also helps developers with structuring, analyzing, and evaluating code.


Dart: The language

The Dart programming language is typically harmless, and it employs static type checking to ensure that a variable's output always corresponds to the static type of the variable. This is sometimes referred to as "sound typing." Even though types are required, type annotations are unnecessary due to type inference. Dart's typing system is also versatile, allowing for the usage of a dynamic type mixed with runtime checks, which can be beneficial for research or for code that requires a lot of dynamic characteristics.


Dart has good null security, which means that values can't be null unless you say so. Dart can protect you from null occurrences at runtime using good null safety and static code analysis.

When Dart finds that a variable is non-nullable, it is always non-nullable, unlike many other null-safe languages. Non-nullability is preserved at runtime if you view your running code in the debugger (hence sound null safety).


Several Dart language features are demonstrated in the following code sample, including libraries, async calls, nullable and non-nullable types, arrow syntax, generators, streams, and getters.

Optimized for the user interface
  • Robust and comprehensive async-await for user interfaces with event-driven code is combined with isolate-based concurrency.
  • A programming language with features such as sound null safety, the spread operator for extending collections, and collection if for customizing UI for each platform.
  • Simple to learn programming language with a well-known syntax

Fruitful development

  • Iteratively make changes to your source code, using hot reload to view the effect in the running program.
  • Write code with strong, adjustable tooling and a flexible type system with extensive static analysis.
  • With your preferred code editor, perform profiling, logging, and debugging.
On all systems, it is quick.
  • For instant starting, AOT-compile programs to native machine code.
  • Compilers for complete, mature, and quick JavaScript are aimed toward the web.
  • Run backend code built in a single programming language to support your app.