• Everything you can place in a variable is an object, and everyobject is an instance of a class. Even numbers, functions, and are objects. All objects inherit from the class.

    • Although Dart is strongly typed, type annotations are optionalbecause Dart can infer types. In the code above, numberis inferred to be of type int. When you want to explicitly saythat no type is expected,use the special type dynamic.

    • Dart supports top-level functions (such as main()), as well asfunctions tied to a class or object (static and instancemethods, respectively). You can also create functions withinfunctions (nested or local functions).

    • Similarly, Dart supports top-level variables, as well as variablestied to a class or object (static and instance variables). Instancevariables are sometimes known as fields or properties.

    • Identifiers can start with a letter or underscore (_), followed by anycombination of those characters plus digits.

    • Dart has both expressions (which have runtime values) andstatements (which don’t).For example, the condition ? expr1 : expr2 has a value of expr1 or .Compare that to an if-else statement, which has no value.A statement often contains one or more expressions,but an expression can’t directly contain a statement.