We may earn an affiliate commission when you visit our partners.
Stephen Grider

If you're tired of spinning your wheels learning Swift or Android, this is the course for you.

Animations? You will learn it. Architectural Patterns? Included. Navigation? Of course.

Flutter is a newcomer to the mobile development scene. Strongly supported by Google, it is already viewed as an ideal platform for replacing native Swift and Android development. Thanks to its amazing standard library of widgets, fast compile times, and amazing documentation, developers are falling in love with Flutter.

This course supports MacOS and Windows - develop Android and iOS apps easily.

Read more

If you're tired of spinning your wheels learning Swift or Android, this is the course for you.

Animations? You will learn it. Architectural Patterns? Included. Navigation? Of course.

Flutter is a newcomer to the mobile development scene. Strongly supported by Google, it is already viewed as an ideal platform for replacing native Swift and Android development. Thanks to its amazing standard library of widgets, fast compile times, and amazing documentation, developers are falling in love with Flutter.

This course supports MacOS and Windows - develop Android and iOS apps easily.

Flutter apps are created using the language Dart. No problem if you're not already familiar with Dart; this course includes a lightning fast introduction to Dart at the beginning, along with hours of bonus lectures at the end of the course solely focused on Dart and its advanced features. If you come from a background working with Java, Ruby, or Javascript, you'll feel right at home with Dart - the syntax is nearly identical, only a few core concepts need to be learned. Dart is a strongly typed language - but don't be discouraged if you're not a fan of strong types. I spend special time in this course to make it extra clear why developing with a strongly typed language is a breeze.

One of the greatest challenges around developing Flutter applications right now is understanding how to design and architect apps. Flutter is still in rapid development, and the community at large is still trying to find out the best techniques. With this in mind, special attention is paid in the course to making sure you understand the primary design patterns advocated by Google's Flutter team, including both the 'Stateful Widget' pattern and the 'BLOC' pattern. The 'BLOC' pattern makes heavy use of Reactive Programming techniques, which you'll learn about in this course as well. These techniques can be easily applied to other languages and frameworks as well - talk about a bonus.

Of course, no mobile app is complete without some nice looking animations. You'll learn how to build animations using Flutter's standard library of tools, which can be easily used to make interactions that your users will love. You should plan to complete the course with knowledge of how to reference Flutter's standard library of widgets to assemble complex animations.

Sign up today and you will:

  • Understand the Dart language and its primary features
  • Store information for long periods of time on the user's device with offline storage
  • Learn how to optimize network requests for improved performance on mobile networks
  • Delight your users with complex animations
  • Expose the functionality of your apps with multi-screen navigation
  • Steer through the incredible amount of Flutter documentation
  • Master Reactive Programming with streams by using RxDart
  • Implement advanced design patterns advocated by Google's official Flutter team
  • Handle user input with form validation
  • Learn to build open source Dart packages and distribute them to other developers

I've built the course that I would have wanted to take when I was learning Flutter. A course that explains the concepts and how they're implemented in the best order for you to learn and deeply understand them.

Enroll now

What's inside

Learning objectives

  • Build beautiful multi-screen apps with flutter
  • Understand the different approaches for loading and maintaining data in flutter apps
  • Create and publish open source projects using dart
  • Learn how to build offline-enabled apps with incredibly efficient data loading
  • Comprehend the best method for reading the incredible amount of flutter documentation
  • Store long-term data on a user's physical device using sqlite
  • Master streams and understand reactive programming to create flutter apps

Syllabus

Let's Dive In!
How to Get Help
Course Resources
Join Our Community!
Read more
Course Organization
A Dart Introduction
Dart Overview
The DartPad Editor
Our First Program
Pulling the Pieces Apart
Functions in Dart
Introduction to Types
Why Use Types?
String Interpolation
Object Oriented Programming in Dart
Creating Classes
Creating Class Instances
Constructor Functions
Review on Constructors
Staying on Target with Dart
App Overview
OOP Design Flow
Adding Fields to Classes
Associated Methods
More Initialization with Constructors
For Loops
Adding Elements to Lists
More on Variable Initialization
Customizing Print Statements
ToString on Cards
Shuffling a List
Annotating Argument Types
Filtering Lists
Shorthand Function Syntax
Reference Lists
Dividing Lists with SubList
Removing Individual Records
RemoveCard Implementation
Named Parameters
Flutter Environment Setup - MacOS
Flutter Setup on MacOS
SDK Extraction
Editing the PATH Variable
XCode License
Generating Flutter Projects
MacOS Setup - Android
Android Setup on MacOS
Android Dependencies
Android Project Setup
More Android Dependencies!
Android Emulator Creation
Flutter Startup
Finished Android Setup
MacOS Setup - iOS
iOS on Mac Setup
XCode Setup
iOS Simulator Startup
App Startup
Flutter Setup on PC
Flutter Install
More Flutter Installation
Android Install
Additional Dependencies
Generating a Project
Selecting an Image
Starting the Emulator
Finishing Android Setup
App Building Time!
Code Editor Setup
What's Flutter About, Anyways?
The Four Step Design Process
Import Statements
Creating Widgets
Displaying Content on Screen
Showing a Scaffold
Customizing the App Bar
Named Parameter Clarification
Required Parameters
Child Parameters
Displaying Icons
Adding Custom Widgets
State Design with Flutter Apps
Stateless vs Stateful Widgets
The Build Method
Local Import Statements
Quick Breather and Review
Refactoring Stateless to Stateful
More Refactoring to Stateful Widgets
High-Level Dart
Generics in Dart
Why Two Classes?
HTTP Requests with Flutter
Photos API
Working with JSON
Casting JSON to Model Instances
Named Constructors
Addressing Non-nullable Instance Field Errors
Adding an Image Model
Function References

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Uses Dart and Flutter, which are strongly supported by Google and viewed as an ideal platform for replacing native Swift and Android development
Teaches the 'BLOC' pattern, which makes heavy use of Reactive Programming techniques that can be easily applied to other languages and frameworks
Includes a lightning-fast introduction to Dart, making it accessible to developers familiar with Java, Ruby, or Javascript
Requires learners to set up and configure Flutter on MacOS or Windows, including installing dependencies and generating projects
Focuses on design patterns advocated by Google's Flutter team, including the 'Stateful Widget' pattern, which is useful for mobile app development

Save this course

Save Dart and Flutter: The Complete Developer's Guide to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Dart and Flutter: The Complete Developer's Guide with these activities:
Review Object-Oriented Programming (OOP) Concepts
Review fundamental OOP concepts to better understand Dart's class-based structure and how it's used in Flutter.
Show steps
  • Read articles or watch videos on OOP principles.
  • Practice creating classes and objects in Dart.
  • Review inheritance and polymorphism examples.
Review 'Effective Dart: Style'
Familiarize yourself with Dart's official style guide to write cleaner, more maintainable code in your Flutter projects.
View Melania on Amazon
Show steps
  • Read through the 'Effective Dart: Style' guide.
  • Identify key style recommendations.
  • Apply the style guide to your Dart code.
Practice Dartpad Exercises
Reinforce your understanding of Dart syntax and features by completing coding exercises in Dartpad.
Show steps
  • Visit the Dartpad website.
  • Complete exercises on functions, classes, and lists.
  • Experiment with different Dart features.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple UI with Flutter
Start a small Flutter project to practice building user interfaces with widgets and layouts.
Show steps
  • Create a new Flutter project.
  • Design a simple UI with basic widgets.
  • Implement basic layout and styling.
  • Run the app on an emulator or device.
Document Your Learning Journey
Create a blog or journal to document your learning process, challenges, and solutions encountered while learning Dart and Flutter.
Show steps
  • Create a blog or journal.
  • Write about your learning experiences.
  • Share code snippets and solutions.
  • Reflect on your progress.
Contribute to a Flutter Package
Contribute to an existing open-source Flutter package to gain experience with real-world projects and collaborate with other developers.
Show steps
  • Find an open-source Flutter package on GitHub.
  • Identify an issue or feature to work on.
  • Fork the repository and make changes.
  • Submit a pull request with your changes.
Review 'Flutter Complete Reference'
Use a comprehensive Flutter reference book to deepen your understanding of widgets, layouts, and architectural patterns.
View Melania on Amazon
Show steps
  • Obtain a copy of 'Flutter Complete Reference'.
  • Read chapters relevant to your current project.
  • Experiment with code examples from the book.

Career center

Learners who complete Dart and Flutter: The Complete Developer's Guide will develop knowledge and skills that may be useful to these careers:
Flutter Developer
A Flutter developer specializes in creating mobile applications using the Flutter framework. This course is highly pertinent, as it provides a comprehensive guide to using Flutter and its underlying language, Dart. The course covers the setup of development environments, the creation of user interfaces with Flutter widgets, the implementation of navigation, handling of user input, and the construction of animations. A Flutter developer needs to understand architectural patterns that are also included in the curriculum, such as 'Stateful Widget' and 'BLOC'. This course prepares developers to create efficient and visually appealing applications by working through the entire process of app design and deployment.
Mobile Application Developer
A mobile application developer designs, builds, and maintains applications for mobile devices such as smartphones and tablets. This course is directly relevant because it focuses on Flutter, a cross-platform framework for building iOS and Android apps using Dart. The course covers essential aspects of app development, including animations, architectural patterns, navigation, and data management for offline use, all of which directly apply to the responsibilities of a mobile application developer. This course also covers the best practices and standards for building apps, which is integral to the work of a successful mobile application developer. Learning to use Flutter, supported by Google, prepares the developer for the demands of the mobile development field.
Cross-Platform Developer
A cross platform developer builds applications that can run on multiple operating systems, such as iOS and Android, using a single codebase. This course is highly beneficial as it teaches Flutter, a framework for cross-platform development. The course covers topics such as setting up development environments for both MacOS and Windows, working with widgets, and implementing animations, which are all crucial for a cross platform developer. The course includes architectural design patterns and data management techniques that a cross platform developer would employ. Through this course, developers can gain the skills needed to build efficient and visually appealing apps for multiple devices and platforms.
Mobile UI Developer
A mobile UI developer focuses on creating the user interface for mobile applications, making the app visually appealing and user friendly. This course introduces UI concepts using Flutter, a framework known for its rich set of widgets. Learning how to use Flutter's library of widgets to assemble complex animations and create interactive interfaces directly benefits a mobile UI developer. This course provides the tools and knowledge to design effective user interfaces through its coverage of creating custom widgets, displaying content and working with animations. This approach is essential for designing and creating the kind of fluid, user-centered apps that dominate today's market.
User Interface Engineer
A user interface engineer is responsible for building interactive and user-friendly interfaces for applications. This course is helpful because it explains how to create complex animations using Flutter's library of tools. The course focuses on how to work with Flutter widgets to assemble user interfaces, which directly translates to the work of a user interface engineer. This course explains how to customize widgets and display content, skills that will help a user interface engineer develop appealing and functional interfaces. The techniques taught in this course are directly applicable in the process of creating an engaging and user-friendly interface.
Application Architect
An application architect designs the structure and components of software applications, creating the blueprint for how an application will function. This course is useful, as it provides hands-on experience with architectural patterns, specifically the 'Stateful Widget' and 'BLOC' patterns used in Flutter development. The course also includes a focus on reactive programming techniques, an important concept for any application architect. These skills help an application architect when evaluating, designing, and implementing mobile application architectures. The course goes over best practices in mobile development, which directly relate to the knowledge that an application architect must have.
Mobile Application Designer
A mobile application designer focuses on the overall design of mobile applications, including user experience and visual appeal. This course may be useful for a mobile application designer, as it teaches how to build animations using Flutter's standard library of tools. The course also covers how to navigate the incredible amount of Flutter documentation. The skills acquired in this course, such as creating custom widgets and complex animations, are useful for a mobile application designer who will use this knowledge when building mobile applications. A grasp of the technical aspects of app development can help a designer make informed decisions about feasibility and user experience.
Software Engineer
A software engineer designs, develops, and maintains software systems. This course helps build a foundation in mobile development using Flutter and Dart. The course explores various aspects of software development, such as object-oriented programming, data management, handling user input, and implementing advanced design patterns. The course provides insights into managing data for offline use, which is important for software engineers who are building robust applications. A software engineer will also benefit from learning about architectural approaches that apply to other languages and frameworks as well.
Technical Lead
A technical lead oversees the technical aspects of a project and guides development teams. This course on Flutter and Dart will be helpful because the technical lead could use this information when managing teams working with Flutter, a growing technology, and Dart. The course highlights the architectural patterns of Flutter, and how to work with data when building an app. With this specialized knowledge of Flutter and Dart, a technical lead can effectively communicate with their team, make better tech choices, and understand project goals in greater detail. The knowledge gained from this course will help them to understand technical constraints, review code, and help provide informed direction.
Mobile Solutions Architect
A mobile solutions architect is responsible for the design, planning, and governance of mobile applications across an organization. While this course primarily focuses on the hands-on development aspects of mobile apps with Flutter and Dart, it may be useful to a mobile solutions architect because it provides detailed insight into the design patterns and best practices for Flutter development. The course goes over the best ways to load and maintain data with Flutter apps, including storing long-term data on devices. This practical knowledge of the entire mobile development process could inform the decisions and strategies of the mobile solutions architect, who must understand the technical aspects in order to be successful.
Front-End Developer
A front end developer builds the user interface and user experience of websites and applications. While this course centers on mobile app development, the skills acquired using the Flutter framework, such as building interfaces using widgets, handling user inputs, and creating animations, can translate to the work a front end developer does. This course may be useful because it introduces the basic concepts of development such as setting up a development environment, creating interactive elements, using code editors, and structuring a project. Even though a front end developer will primarily work on web applications, understanding the logic and structure of a project is applicable across both web and mobile development. The course covers design patterns, which are helpful for building a strong foundation in application development.
Application Support Specialist
An application support specialist provides technical assistance and troubleshooting for software users. This course may be useful by providing a fundamental understanding of application development with Flutter. The course covers building mobile applications, handling long-term data storage, and understanding offline data loading techniques which are important for supporting users of these systems. This course goes over important skills like how to read and understand documentation, which could help an application support specialist when assisting users of a Flutter application. A familiarity with application architecture is also useful for troubleshooting.
Technology Consultant
A technology consultant advises businesses on how to utilize technology to meet their goals. While this course is centered around learning mobile development through Flutter, it may be useful as it provides a consultant with a greater understanding of the mobile app development process and what can be achieved with Flutter. The course covers many important concepts such as creating user interfaces using widgets, implementing animations, and understanding architectural patterns. This knowledge would help a technology consultant by giving them insights into a fast-evolving mobile technology, which they could incorporate into strategic recommendations. They must learn the technical concepts and best practices in order to provide the best guidance.
Software Developer
A software developer writes and tests code to build software applications. Although this course focuses on mobile development with Flutter and Dart, it may be helpful by providing a foundation in software development principles, such as using version control, working with data, creating animations, and implementing design patterns. The course introduces object-oriented programming, which is a building block of software development. Even though they may not use Flutter daily, a software developer can transfer these software development skills to other types of development projects. This course covers the building of open source packages, a valuable skill for any software developer.
Quality Assurance Tester
A quality assurance tester evaluates software products to identify defects and ensure quality. This course may be useful by providing a basic understanding of mobile app development with Flutter, which can help them in testing Flutter-based applications. The course explains important aspects that testers should be aware of, such as managing data, building offline-enabled apps, and working with animations. Knowing how an app is built will be beneficial for a quality assurance tester when evaluating both the app's functionality and its user interface. An appreciation of the architectural patterns is also valuable for this function.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Dart and Flutter: The Complete Developer's Guide.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser