Design+Code logo

Quick links

Suggested search

Source Code

You can also view the source code for each section in the course in my GitHub repository.

About this Course

Much like SwiftUI and React, Flutter uses a declarative UI making it one of the best frameworks for rapid design and development. This is why this course was designed for both designers and developers. We'll explore how to create apps for both major mobile operating systems, Android and iOS, with Flutter and its easy-to-learn Dart programming language. This course is beginner-friendly and will help you dip your toes into the ever-expanding ocean that is Flutter. We've packed this course with design tricks and efficient workflows to help you build great user interfaces in record time.

The design file is in Figma, project assets, and Flutter source code is shared with you so that you can compare against your own progress.

Requirements

While this course is beginner friendly, it will help to have some programming experience, especially one utilizing a declarative UI. If you're coming from a SwiftUI or React/React Native background, then you should find Flutter and Dart really easy to understand.

In this course, I am running a beta of macOS Big Sur and Xcode 12, as well as Android Studio 4.0.1. Luckily, Flutter has been around for quite some time so it is not required that you use beta applications as I'm sure macOS Catalina and Xcode 11 will work just as well. We'll be using Android Studio to develop our Flutter app so I will guide you in downloading each of the above applications as well as the Flutter and Dart SDK.

Install Xcode

If you're on a Mac, Xcode is a great tool to have. It will give you access to the Command Line Tools that are crucial for bridging Flutter to iOS. With Xcode, you will also get access to the iOS Simulator, a handy tool to see how you Flutter app will perform. You can download Xcode from the App Store. Screen Shot 2020-08-04 at 11.42.56 AM

Install Android Studio

Android Studio is available for both macOS and Windows users. For Mac users, I recommend downloading Android Studio even if you have Xcode and VSCode installed. When developing with Flutter, Android Studio provides a list of handy shortcuts to speed up your workflow, access to Android Virtual Devices, and a deeper insight to your app's performance and layout.

To install Android Studio, you can download the app from the Android Developer website at https://developer.android.com/studio. You'll see download options for your respective system, either Windows, macOS, Linux, or Chrome OS.

When you first open Android Studio, you'll be asked to install the Android SDK along with some other plugins to help with development. You should follow the instructions Android Studio gives you as these plugins and programs will be helpful for future Android development. Screen Shot 2020-08-04 at 11.43.41 AM

Installing the Flutter SDK

Before starting, you'll need the Flutter and Dart SDK to create cross platform apps. To install Flutter, head over to Flutter's installation page where you can follow the instructions and download the SDK relative to your system. For Mac users, it's simpler to install using the Terminal.

Open Terminal and type:

mkdir flutter_dev
cd flutter_dev
git clone https://github.com/flutter/flutter.git

This will create a new folder called flutter_dev and clone the Flutter SDK into the folder.

Once the repository has been cloned, open the flutter_dev folder and navigate to flutter > bin. Copy the path to the bin folder.

Heading back to Terminal, type:

vim ~/.zshrc

This opens an "rc" file that your Terminal uses when issuing it commands. Press "I" to go into Insert Mode, scroll all the way to the bottom, and at the end of the line, press enter a couple of times to give some space between the end of the "rc" file and the following line where you will type:

export PATH=[PATH_TO_FLUTTER_SDK]/flutter/bin:$PATH

Press the colon button, "wq", and the Enter to save and quite the rc file. This tells terminal where your Flutter SDK is located.

Now, open a new window in Terminal and issue the flutter command. This should have Terminal start to download and install the Dart SDK. After the installation is complete, type flutter —version to verify that everything is working. Terminal

Linking the Flutter SDK to Android Studio

Open Android Studio and on the startup screen, press the Configure button at the bottom, and select SDK Manager. In the new window that opens up, select Plugins from the sidebar, and with the Marketplace tab selected, search for Flutter. The first result should be the one we're looking for. It should come from flutter.dev. Click on the Install button and Android Studio will alert you letting you know that the Dart plugin will be installed as well. Select Install and after a couple of seconds, select Restart IDE.
Screen Shot 2020-08-04 at 11.47.15 AM

Creating your first Flutter project

On the startup screen, there should be a new option called Start a new Flutter project. Select that button and select Flutter application as your template. After clicking Next, you should be taken to a screen where you can configure your Flutter application.

Under Project Name, put designcode, and make sure that the Flutter SDK path matches the path where you installed the Flutter SDK. Android Studio should automatically detect this but it's good to verify twice. Select a Project Location to save your project and you may optionally set a Description. When you're satisfied with your configuration, press Next.

Finally, you will be asked to set the Package Name. If you're coming from iOS development, the package name is similar to the bundle identifier. I am setting mine to io.designcode.designcode. Making sure that all the AndroidX and Platform channel language checkboxes are selected, click on Finish to have Android Studio create your Flutter project. Screen Shot 2020-08-04 at 11.56.38 AM

Exploring the Sample Application

When the project opens up, you'll see that you are in a file called main.dart. On the lefthand side, you will see a sidebar. This sidebar will contain all of the folders and libraries associated with your Flutter project. Opening the designcode folder, you'll notice that there are many folders underneath it. The iOS folder indicates the backend Flutter code that helps bridge the Dart code to iOS, the android folder does the same but for Android, and the web folder is used to port our code over to making a web app. However, we will working out of the lib folder. This is where most of our code will go. If you open this folder, you can see that there is one file in there: main.dart. This file is also the file that the IDE is currently displaying to you.

Typically, Flutter convention states that main.dart should be the file containing the main() method, but this is not a hard and fast rule. The main() method is the first method Flutter looks for when running an app. Within this method, you'll see that Flutter is calling another function called runApp which takes the class MyApp as an input.

Without going into too much detail, you'll see that MyApp is a class that conforms to a type of StatelessWidget. If you want to see what this sample application does right now, at the top of our IDE, you'll see a dropdown menu which is currently set to no device selected. Switch this to Open iOS Simulator and then when the iOS Simulator boots up, press the green play button. This will build and run the app on the simulator.

Hot Reload

One of the advantages of Flutter is that with the integration of Hot Reload, we do not need to constantly rebuild our app every time we change our code. To demonstrate this, let's make a small change to the current starter app. With the MyApp class, change the primary swatch of ThemeData to the following:

return MaterialApp(
	title: 'Flutter Demo',
	theme: ThemeData(
		primarySwatch: Colors.red,
		visualDensity: VisualDensity.adaptivePlatformDensity
	),
	home: MyHomePage(title: 'Flutter Demo Home Page'),
);

All we did here was change the color scheme of the app from blue to red. Now if we pressed CMD+S to save our file (or the lightning button), Android Studio will hot restart our app and we instantly our simulator will reflect those changes. This makes it easy to create design changes on the fly. Hot Reload

Figma Template (optional)

If you want to track your progress as we develop this application in Flutter, Meng has created a Figma template for you to follow. The design files are made available to you so you can check how the user interface was made. FigmaTemplate

Import Assets

Assets can be downloaded in the second section of this course, or in the Downloads page. To import assets, drag and drop the folders inside the Assets folder.

READ NEXT

Build your first Widget

Templates and source code

Download source files

Download the videos and assets to refer and learn offline without interuption.

check

Design template

check

Source code for all sections

check

Video files, ePub and subtitles

Videos

ePub

Assets

Subtitles

1

Flutter for Designers

Build a cross platform app for iOS and Android

12:09

2

Build your first Widget

Build a custom UI from scratch using Widgets in Flutter

11:16

3

Introduction to Dart

Learn the basics of programming in Dart

9:56

4

Classes in Dart

Develop sidebar items with the help of classes

10:32

5

Building a Full Screen Widget

Working on the sidebar using Column, Spacer, and CircleAvatar widgets

12:40

6

Building a Card Widget

Build a beautiful UI component using layout techniques

15:03

7

Detecting Tap Gestures

Make your app responsive by detecting tap gestures and tracking text entered into text fields

12:03

8

Stateful Widgets

Learn to pass data between different widgets

11:32

9

The List View Widget

Use the List View widget to create a new kind of scrollable UI

11:58

10

Animations in Flutter

Create beautiful animations using mixins, tickers, and actions

10:54

11

Further Animations

Pass data through animations

10:51

12

Flutter Packages

Tap into the extensive Flutter community and add a sliding panel widget

10:50

13

Adding Cards to our Sliding Panel

Next multiple widgets within one another

11:57

14

Creating Dynamic Widgets

Use functions to dynamically generate widgets

12:07

15

Navigation in Flutter

Transition between screens using routes and run platform specific code

11:52

16

Animations with the Hero Widget

Magically transition between views using similar elements

12:34

17

Building the Course Screen

Use a scrolling view widget to display multiple lines of text

10:51

18

Manually Control the Panel Widget

Display our course sections screen with the help of a sliding up panel

11:09

19

Creating a Vertical Scrolling List

Build the Course Sections Screen with a List View widget

11:57

20

Making the Profile Screen

Utilize Navigator to Segue to the Profile Screen in our app

11:34

21

Populating the Profile Screen

Add our name, profile picture, and badges to the Profile Screen

10:32

22

Utilizing Widgets across Multiple Screens

Add our custom CertificateViewer widget to the Profile Screen and modify our Continue Watching Card Widget

8:39

23

Setting Custom App Icons

Learn to set the app icon for your Flutter application in both Android and iOS

9:50

Meet the instructor

We all try to be consistent with our way of teaching step-by-step, providing source files and prioritizing design in our courses.

Sai Kambampati

Student. Engineer. Designer. Not always in that order.

Student at UCSC constantly learning about new technologies, building innovative mobile apps, and designing breakthrough products.

icon

6 courses - 24 hours

course logo

Jetpack Compose for Designers

Learn the fundamentals of Jetpack Compose to build a beautiful Android application using Kotlin and Android Studio

4 hrs

course logo

UIKit for iOS 15 Part 2

Learn advanced techniques about animations, layout, localization, Firebase, Xcode Cloud, and more!

3 hrs

course logo

UIKit for iOS 15

Design and code a UIKit app for iOS 15 with storyboards, custom layouts, scroll detection, and accessibility using Xcode 13

5 hrs

course logo

Advanced Development in SwiftUI

Advance your SwiftUI skills by developing an app using Core Data, CloudKit, In App Purchases, Sign In With Apple, and Firebase Authentication

4 hrs

course logo

Flutter for Designers Part 2

Continuing on from the previous Flutter for Designers course, this course has a heavier emphasis on using Firebase API's to combine Firebase and Flutter. There will be a lesser emphasis on creating front-end Flutter UI and more emphasis on how to build functional applications capable of being shipped to the App Store. A review of the previous course and the Dart programming language will be very helpful. That being said, you will also be introduced to some new Flutter widgets and packages.

4 hrs

course logo

Flutter for Designers

Flutter is a relatively new toolkit that makes it easy to build cross-platform apps that look gorgeous and is easy to use. By utilizing a platform's native components we'll build an app that can run on both iOS and Android that will look and feel like it was developed natively. Furthermore we'll see how with one single codebase, Flutter provides us with native performance, hot reload for fast development, and access to beautiful, native components.

4 hrs

Test your knowledge of Flutter. Complete the course and get perfect results for this test to get your certificate.