
Learn how dart 2 enforces explicit types through a sound type system, triggering breaking changes across code and packages. Consult source code and GitHub for migrations and tooling.
Learn to reuse code in Dart by importing libraries, including Dart core and convert, and perform utf8 and base64 encoding and decoding, while noting encoding differs from encryption.
Install the http package from pub durtlang.org, import http as Http, perform an asynchronous http get on the TMZ.com front page, and handle status codes like 200 and 404.
Learn how classes act as templates and blueprints in Dart, create objects with the new keyword, and see each instance operate independently through sample code.
Explore how a class in Dart acts as a blueprint for objects with a life cycle, using a private underscore variable and a default constructor to create instances.
Explore Dart class constructors and the this keyword to distinguish between object fields and parameters, understand lexical scope, and see how objects and memory pointers relate to default values.
Explore lexical and class scope in Dart, with constructors and the this keyword, and learn how variable naming and scope blocks influence references and code behavior.
Explore encapsulation in dart by building a class with private variables using underscores and public variables, and using the this keyword to resolve name collisions.
Learn how to implement getters and setters in Dart to access private fields from outside the class. See a dog example where the setter auto calculates age.
Explore how static shares a single value across all class instances, contrasting with non-static variables that are unique per instance.
Explore inheritance by building animal, mammal, and feline classes, where each extends the previous, to inherit properties like hair, backbone, and claws, and using super to override behavior.
Learn how Dart uses mixins with the with keyword to combine dragon and ghost behaviors into a monster, illustrating true vs. false multiple inheritance and common mixin pitfalls.
Explore interfaces as contracts between classes and distinguish them from inheritance by implementing an employee interface in a manager class, supplying all required getters, setters, and methods.
Explore abstract classes in Dart by building a car example, using the abstract keyword, inheritance with extends, and providing concrete implementations for abstract methods like honk.
Explore generics in Dart through a generic class with parameters like T or K, showing code that runs with numbers or strings and how extends num handles integers and doubles.
Explore generics in Dart with a generic function where T extends the number class and returns the same type. Note type inference, a 25 sum, and doubles or strings.
Create a generic class counter with a type extending Num and a list of items to total numbers, and observe int not a subtype of double errors and Num's role.
Explore the Dart IO file system by creating a Directory with a path and checking if it exists synchronously. Understand synchronous versus asynchronous IO with simple analogies.
Import dart:io and create a temporary system temp directory synchronously, then check existence, print the path, and delete it, illustrating how the OS manages the system temp directory.
Import the dart package, point to the current directory, and list items with listSync recursive true to print each item's path and properties.
Explore using a random access file with Dart io to compare append and write modes, including write string sync and read as string sync.
Continue to your journey into the Dart language. This course picks up where the beginner course left off. In this course you will learn classes, scope, packages, and how to work with the file system. We will also explore generic programming. All of the code presented in this class is freely available on GitHub.