Programming · PRC-26

Dart Programming for Flutter

Dart Programming for Flutter is a course in the Dart language as used with Flutter, from null safety, control flow, functions, collections and records to object-oriented programming, mixins, generics and async/await, applied in a simple Flutter app. It suits developers, students and IT teams who already have some experience in another programming language.

Updated
From 5,850 THB / person 6,500 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration12 hours · 2 days
  • FormatOnsite / live online
  • Next roundOn request
  • CertificateIncluded

Course overview

Flutter is a popular framework for building apps from a single codebase that runs on Android, iOS, the web and desktop, and every part of a Flutter app, from the screens to the business logic, is written in Dart. People who skip Dart and jump straight into Flutter are often confused by null safety, constructors, async/await and the class structure of widgets, which slows their progress and makes problems hard to solve on their own.

This course builds a solid foundation in Dart 3.13 for Flutter work, covering variables, null safety, control flow, switch expressions and patterns, functions, collections and records. It then goes into object-oriented programming with classes, primary constructors, inheritance, mixins, sealed classes, enums, extensions and generics, followed by futures and streams for calling web APIs, and closes by putting everything together in a simple Flutter app. (2 days, 6 hours per day, 12 hours in total, Beginner level.)

What you’ll gain

  • Set up the tools and write Dart 3.13 programs in DartPad and VS Code
  • Use variables, data types and null safety correctly
  • Write conditions, loops, switch expressions and patterns
  • Write functions with different kinds of parameters and use collections and records
  • Write object-oriented code with classes, constructors, inheritance and mixins
  • Use abstract classes, interfaces, sealed classes, enums, extensions and generics
  • Write asynchronous code with futures, async/await and streams
  • Read and write the Dart code used in Flutter apps with understanding

Who this course is for

  • Developers who want to start building apps with Flutter
  • Developers from other languages such as JavaScript, Java, C# or Python who want to learn Dart
  • Students and enthusiasts with some programming experience who want to move into mobile apps
  • IT teams evaluating technology for cross-platform app development
  • People who have tried Flutter but are not yet confident with the Dart language

Prerequisites

  • Confident computer skills such as creating, copying, deleting and editing files and folders
  • Some programming experience in another language, such as variables, conditions and loops
  • Able to use the internet and search for information
  • A laptop on which you can install software

Curriculum

Course Details

This is the 2026 edition that replaces the previous content of Dart Programming for flutter. It keeps the original core of language basics, conditions, loops, functions, collections, OOP, inheritance, abstract classes and interfaces, and examples of using Dart in Flutter, but updates everything to Dart 3.13 as shipped with Flutter 3.47 and adds null safety, switch expressions, patterns, records, mixins, sealed classes, primary constructors, enums, extensions, generics and asynchronous programming. It runs for 2 days, 6 hours per day (12 hours in total, 09:00-16:00), as lectures with a lab in every topic. Beginner level, for people with some programming experience. Every tool is free to use. Learners who want to build complete Flutter apps can continue with Flutter for Beginners.

Day 1 Modern Dart Fundamentals

Section 1: Lab: Getting Started with Dart 3.13

  • What Dart is and why Flutter uses it
  • Try code in DartPad and install Dart through the Flutter SDK
  • Create a project with dart create and run it in VS Code
  • Coding style from Effective Dart, dart format and dart analyze
  • Lab: a first command-line Dart program

Section 2: Lab: Variables, Data Types and Null Safety

  • How var, final and const differ
  • int, double, String, bool and string interpolation
  • Sound null safety: nullable types, ?, !, ?? and late
  • Arithmetic, comparison, logical and cascade (..) operators
  • Lab: a calculator that handles null values safely

Section 3: Lab: Control Flow and Pattern Matching

  • if, else and logical operators
  • Loops with for, for-in, while, do-while, break and continue
  • The modern switch statement and switch expressions
  • Patterns, guard clauses and if-case
  • Lab: a grade calculator and a command menu

Section 4: Lab: Functions in Dart

  • Functions with return types and arrow syntax (=>)
  • Positional, optional and named parameters, and required
  • Lexical scope and closures
  • Functions as values: anonymous and higher-order functions
  • Lab: a function library for prices and discounts

Section 5: Lab: Collections and Records

  • Lists, sets and maps, with adding, removing and searching
  • map, where, fold and the spread operator
  • Collection if, collection for and null-aware elements
  • Records for returning several values, and destructuring
  • Lab: manage a product list with lists and maps
Day 2 OOP, Asynchronous Code and Using Dart in Flutter

Section 6: Lab: Classes and Objects

  • OOP concepts, classes, objects and instances
  • Generative, named and factory constructors
  • Primary constructors, stable since Dart 3.13
  • Private members, getters and setters
  • Lab: build product and shopping cart classes

Section 7: Lab: Inheritance, Mixins and Class Modifiers

  • extends, super and overriding methods, including toString()
  • Abstract classes and interfaces with implements
  • Mixins for sharing behaviour
  • Class modifiers: sealed, final, base and interface
  • Lab: sealed classes with exhaustive switch

Section 8: Lab: Enums, Extensions and Generics

  • Enhanced enums with fields and methods
  • Dot shorthands such as .running instead of the full enum name
  • Extension methods to add behaviour to existing classes
  • Generics for reusable classes and functions
  • Lab: order status with enums and extensions

Section 9: Lab: Asynchronous Programming

  • Futures, async and await
  • Handle errors with try, catch and finally
  • Streams and await for
  • Call a web API with the http package and turn JSON into model classes
  • Lab: fetch product data from an API and display it

Section 10: Workshop: From Dart to Flutter

  • Widgets are classes: StatelessWidget and StatefulWidget
  • Constructors, super.key and overriding build() in Flutter
  • Use model classes and async code in a Flutter app
  • Workshop: a product list app that loads data from an API
  • Use AI assistants to explain Dart code, and next steps into Flutter

Schedule & training options

For individuals — public rounds

No public rounds are open right now. Join the waiting list and we will contact you first when the next round opens, or ask us on LINE. Or call 02-570-8449 or 088-807-9770

For organisations — in-house / private

  • Tailor the content to your team’s tools and projects
  • Your dates, at your office or live online
  • Quotation with tax ID for procurement
Corporate training quote

Instructors

Frequently asked questions

What is the difference between final and const in Dart?

Both can be assigned only once, but a final value is known at runtime, such as the current time or data from an API, while a const value must be known at compile time and const objects are shared rather than recreated. In Flutter, marking unchanging widgets as const reduces rebuild work, and dart analyze suggests where const should be used.

What kinds of optional parameters does Dart have, and when do you use each?

There are two kinds: optional positional parameters in square brackets, passed in order, and named parameters in curly braces, passed by name. Both can have default values, and named parameters can be marked required. Flutter uses named parameters in almost every widget because they stay readable when there are many values.

How do abstract classes and interfaces differ in Dart?

An abstract class is a template that cannot be instantiated directly and can contain both implemented methods and methods left for subclasses to write through extends. Interfaces in Dart are used with implements, and the implementing class must write every method itself. Since Dart 3, class modifiers such as interface class and sealed class also control which classes can be extended or implemented.

Who is the Dart Programming for Flutter course for, and what should I know beforehand?

It suits developers, students and IT teams who want to start building apps with Flutter, as well as people who have tried Flutter but are not yet confident with Dart. You should have some programming experience in another language, such as variables, conditions and loops, and be confident managing files on a computer.

What will I be able to do after the Dart Programming for Flutter course?

You will be able to write Dart 3.13 confidently, including null safety, patterns and records, design classes with constructors, inheritance, mixins and sealed classes, use enums, extensions and generics, call web APIs with async/await and read Flutter code with understanding, and you take home the Flutter project from the workshop. Participants who complete the training receive a Certificate of Completion.

Can the Dart Programming for Flutter course be run in-house for our team?

Yes. IT Genius Institute runs in-house training and can adapt the lab examples to the apps or APIs your team is building, and can run it back to back with a Flutter course for teams starting cross-platform app development. Contact us for a quotation and to discuss the content.