
download the Dart SDK on mac, use stable channel version 2.13.4, unzip it, install an editor (IntelliJ or Visual Studio Code), and place the SDK in a permanent folder.
Set up the Windows environment for Dart by installing the Dart SDK, adding it to the system path, and choosing an IDE such as Visual Studio Code to start coding.
Install and configure IntelliJ IDEA with the Dart plugin to start a Dart project. Customize themes and fonts, set the Dart SDK path, and run code in the console.
Set up Visual Studio Code for Dart development by installing the Dart extension, locating the Dart SDK, and creating a new console project, with essential shortcuts for formatting and debugging.
Explore the Dart basics: define the main function, print to the console, end statements with semicolons, and manage strings with single, double, and triple quotes, including string interpolation with ${}.
Learn to declare and initialize variables in Dart with var and basic types (int, double, string, boolean), print and interpolate with $, and use final or const for immutability.
Master type casting in Dart by converting integers to doubles and booleans to strings using toDouble, toString, and num.parse, while inspecting runtime types and comments.
Learn arithmetic operations and variables in Dart, including addition, subtraction, multiplication, division, and the remainder of division. Explore comparison and logical operators, booleans, and type checks such as is integer.
Master assignment operations to modify variables with increment, decrement, and compound operators in Dart. Explore x = x + 1, x += 20, x *= 2, and x -= 5.
Learn how to use if statements in Dart to evaluate conditions, apply else if and else branches, and build nested if structures to control program flow.
Demonstrates the conditional operator in Dart, using the ternary form to select between values based on a boolean condition, with optional braces and a null-aware fallback using ??.}
The lecture explains switch statements in Dart and demonstrates handling plus, minus, multiplication, division, and remainder operations with case blocks, breaks, and a default.
Explore loops in Dart, including while, do-while, and for loops, defining a counter, setting a condition, updating the counter to repeat code, including infinite loop examples.
Explore nested loops in Dart by nesting an external loop (i) inside an internal loop (j) to print the multiplication table from one to ten.
Explore Dart control statements in loops, including break and continue, with examples of nested loops and labeled loops that control inner and outer iterations like a multiplication table.
Build a degree app in Dart that uses nested if statements to map scores to letter grades (A to F with plus/minus), and explore random scores via the math library.
Explain Dart number properties and functions, including isOdd, isFinite, isInfinite, isNaN, absolute value, and rounding methods (round, floor, ceil, and rounding toward zero), plus the remainder operator.
Explore string methods in Dart, including isEmpty, isNotEmpty, toLowerCase, toUpperCase, and contains. Use replace, replaceRange, replaceFirst, replaceAll, split, join, and trim to manipulate strings and lists.
Learn how to read user input in a Dart console app by importing dart:io, prompting for age or birth year with readLineSync, converting to numbers, and computing age with DateTime.now().year.
Learn how to handle runtime errors in Dart by using try-catch blocks, printing error messages, and applying specific catches for format exceptions, with an infinite loop to retry input.
Explore how lists, sets, and maps in Dart are iterable data structures that store multiple values, including dynamic types, accessed by index or key, and traversed with for loops.
Learn to create and manipulate lists in Dart, access elements by index, and use first, last, and reversed. Master mutating lists with add, insert, remove, replaceRange, and clear.
Master two dimensional lists in Dart by creating 2d arrays, using row and column indices, checking length, and printing all elements with nested loops.
Explore how to define and manipulate sets in Dart, iterate with forEach, and convert to lists with toList. Learn to add elements, check contains, and apply intersection, union, and differences.
Master maps in Dart by defining key-value pairs, accessing by key, printing, iterating with forEach, and using keys, values, and entries; add, addAll, contains checks, remove, and clear.
Explore Dart function types by defining, calling, returning values in main and other functions; learn parameters, argument passing, void and integer returns, and printing results.
Explore default and optional parameters in Dart by summing x and y, with y defaulting to zero, and use curly braces to declare optional parameters passed by name, order independent.
Learn how to pass lists through functions in Dart, print list elements with for loops, and call a function with a list to display dynamic lists A and B.
Explore recursion by seeing a function that calls itself with n-1, using a base case of zero to return zero and build the sum with n.
Learn how to throw and handle exceptions in Dart using throw, try, and catch, with practical examples like an age calculator app validating birth year and invalid data handling.
Explore how Dart lambda expressions create anonymous functions in one-line or expression bodies, store them in variables, and apply them with for-each on lists.
Explore higher order functions in Dart, passing functions as parameters, using examples like some, edge, and for each, including lambda expressions.
Explain how the where function filters a list or set by a test, returning elements that satisfy it and showing first, last, index, remove, and optional parameters.
Learn how typedefs define function types for higher-order functions in Dart, pass two-argument operations, distinguish runtime and compile-time errors, and ensure correct return types.
Learn to model real-world concepts as classes and objects in Dart, using properties as variables, methods as functions, and create multiple objects while handling null safety and dynamic types.
Learn how constructors work in Dart by creating a class with name, age, and height; initialize objects through a constructor with positional arguments, replacing repetitive set values code.
Explore how static and this work in dart, showing instance versus class level members, static functions and variables, named parameters, and default values.
Define setters and getters for age in a Dart class, using set age and get age with this.age to assign and retrieve values, and illustrate dynamic typing and late initialization.
Explain how inheritance works in Dart using classes A, B, and C, with B extends A and C extends B, showing shared info function access across superclasses.
Explore the super keyword in a class hierarchy, calling the superclass function from a subclass and executing it with a message to print the output.
Learn to use the super constructor in a Dart class hierarchy, understand constructor execution order from A to C, and pass values via super to each level.
Learn to override methods and use the interface concept in Dart. Explore inheritance, abstract classes and abstract functions, and why multi inheritance is not supported, using extends and implements.
Explore how mixins enable combining class functionality in Dart, how abstract mixins work, and when to use extends with mixins or implements to share behavior.
Compare final and const in Dart: final supports one-time assignment and possible runtime changes; const creates compile-time constants that cannot change, and class const must be static.
Define a dart enum class for colors, listing red, blue, and black, access and print enum values by index, and use a switch statement to return the corresponding color.
Learn how to use generics in dart by defining a generic class with type parameter t, then create objects with int, double, string, or boolean to ensure type-safe operations.
Import the dart math library to use trig functions (sin, cos, tan), inverse trig, exp, log, sqrt, min, max, and constants pi and e, including degree to radian conversion.
Mastering date and time handling in Dart: get the current date, add durations, inspect weekday and month properties, and parse or construct dates, including UTC values and date differences.
Explore operator overloading in Dart by defining plus for a custom class, using cascade notation to streamline calls, and combining two objects into a new result.
Explore polymorphism using a shape class hierarchy (shape, circle, rectangle, square), demonstrating inheritance, method overriding, and calling a single info method on a shape list, with abstract class constraints.
Explore lexical closure by defining functions inside functions, returning functions, and treating functions as values stored in variables that can be invoked later.
Explain the callable class concept in Dart by converting a regular class into a functional object through a call method, enabling object instances to be invoked like functions.
Learn to use extension functions in Dart to add new methods to built-in classes, enabling string to integer conversion and arithmetic without editing the original class.
learn how futures enable asynchronous programming in dart by creating futures, using then and catchError, and handling completion, delays, and returned values.
Explain how streams differ from futures by producing a sequence of values over time, using periodic streams, listening to data, error, and done events, and controlling with subscription cancel.
Learn to locate a package on the official site, read its usage, and add it with dart pub add or flutter pub add, then run pub get to manage dependencies.
Learn how to fetch data from an API using Dart, including importing the http package, calling get, awaiting responses, and parsing JSON to access keys like id and title.
Learn Dart file system basics by creating, checking file existence with exists and exists sync, reading and writing, deleting, and copying files with async and sync variants.
Explore Dart null safety by understanding nullable and non-nullable types, guarding against nulls with checks, and using the exclamation mark for non-null assertion in practical examples.
Explore Dart null safety with dynamic types, required and optional parameters, and named parameters in a class example, including non-null assertions using the exclamation mark.
Create a final project in Dart that builds a quiz app with a math question model, input handling, and null safety using safe parsing and default values.
There are way too many programming languages and infinite use-cases for each one of them, every day developers are coming up with something new and we need to keep up with the flow.
Both of these technologies are relatively new when you compare them to the most popular languages and frameworks, they have been looking over for some years now but I would consider this combo to be ahead of its time like if you sold an electric car in 1995.
Let me tell you why:
What is Dart?
Let’s kick this off by explaining some qualities of Dart.
First, it is developed by Google and it launched in 2011. Google uses Dart to develop many of its main applications including Ads which as you can imagine must require quite a solid build.
Dart is very flexible in the way it is compiled and executed, it is in fact the only programming language capable of compiling JIT (Just In Time — used during development) and AOT (Ahead Of Time — used when the app is released), it can also be compiled to Javascript in order to be run by browsers or straight to native code. This means its execution is fast.
Thanks to its versatility Dart can be used for client or server-side development. The syntax looks like ‘C’ meaning it is statically typed so this provides more certainty on the types of values you are passing on, but it is also meant to be used in OOP, if you have a background in C you’ll pick it up quick. Dart also shares some similarities with Javascript like the use of arrows and asynchronous functions.
Let’s not forget about ‘hot reload’.
You can test your code like if it was HTML and you were refreshing the page to see the changes. Yes, it is that easy.
Dart has been slept on by the dev community for too long but I think its time is coming with the mobile-first principle that is gaining such massive momentum. It runs fast on all platforms and is easy to pick up and learn by programmers.