Learn to build apps that work on Android, iOS, Web, and Desktop

Overview

Cross-Platform Development with Flutter Course

Learn to build apps that work on Android, iOS, Web, and Desktop

Author badge Framework badge Language badge Community badge

Course Showcase

Go To Course

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, desktop, and embedded devices from a single codebase (flutter.dev). In this course, we will dive into Flutter development by building 5 applications from scratch. We will cover building great user interfaces, navigation, persistent storage, network requests (API calls), managing state, integration with Firebase, and all the concepts you need to start bringing your ideas to life. A detailed outline of the course curriculum is shown below:

Environment Setup (Slides)
This section will cover setting up your development environment and getting all the tools you need to start developing apps with Flutter

  • Downloading the Flutter SDK
  • Getting Android Studio and Xcode
  • Git
  • nodejs
  • Surge
  • VSCode
    • Downloading useful plugins (flutter, dart, and sublime text key map)

Project 1: Building a personal portfolio
In this section, you will build and deploy a personal portfolio application that you can share with the world. You will cover the following topics:

  • Creating a new project
  • Running your app
  • Hot Reload and Hot Restart
  • Dart data types
  • Stateless widgets
  • User interactions with Buttons
  • Adding assets and third party dependencies
  • Web deployment using surge
  • Running app in release mode

Project 2: Building a Pokédex app
In this section, you will build and deploy a Pokédex application that displays a list of Pokémon. You will cover the following topics:

  • Navigation
  • Working with ListViews
  • Transferring data between screens
  • Object-oriented programming in Dart
  • Generating launcher icons and a splash screen

Project 3: Building a cryptocurrency tracker
In this section, you will build and deploy a cryptocurrency tracker that fetches data from an API and displays it on the screen. You will cover the following topics:

  • Stateful widgets
  • Managing state
  • Networking requests (API calls) using the Dio Package
  • Working with JSON
  • Factory constructors

Project 4: Building a notes app
In this section, you will build and deploy a notes app that persistently stores data across app loads. You will cover the following topics:

  • Persistent data storage
  • Shared preferences
  • Hive database
  • Working with FutureBuilders
  • Working with GridViews
  • Forms and input validation

Project 5: Building a real-time chat application using firebase
In this section, you will build and deploy a real-time chat application with email authentication using firebase. You will cover the following topics:

  • Firebase integration
  • User authentication with email and password
  • Email verification
  • Working with StreamBuilders
  • Real-time data with Firestore

Personal Portfolio

Web Demo
Video Tutorials
Slides and Assets

portfolio

url_launcher configuration

iOS (info.plist)

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>https</string>
  <string>http</string>
</array>

Android (AndroidManifest.xml)

<queries>
  <intent>
      <action android:name="android.intent.action.VIEW" />
      <data android:scheme="https" />
  </intent>
  <intent>
      <action android:name="android.intent.action.VIEW" />
      <data android:scheme="http" />
  </intent>
</queries>

Dependencies

dependencies:
  animated_text_kit: ^4.2.1
  flutter:
    sdk: flutter
  font_awesome_flutter: ^9.0.0
  url_launcher: ^6.0.4
  
dev_dependencies:
  flutter_launcher_icons: ^0.9.0
  flutter_native_splash: ^1.1.8+4
  flutter_test:
    sdk: flutter
  lint: ^1.0.0
  
flutter_icons:
  android: "launcher_icon"
  ios: true
  remove_alpha_ios: true
  image_path: "assets/images/logo.png"
  adaptive_icon_background: "assets/images/logo.png"
  adaptive_icon_foreground: "assets/images/logo.png"
  
flutter_native_splash:
  color: "#FFFFFF"
  image: "assets/images/logo.png"
  android: true
  ios: true

Configuring assets

  assets:
    - assets/images/
    - assets/badges/
    - assets/projects/
    
  fonts:
    - family: FiraCode
      fonts:
        - asset: assets/fonts/FiraCode/FiraCode-Light.ttf
        - asset: assets/fonts/FiraCode/FiraCode-Medium.ttf
        - asset: assets/fonts/FiraCode/FiraCode-Regular.ttf
        - asset: assets/fonts/FiraCode/FiraCode-SemiBold.ttf
        - asset: assets/fonts/FiraCode/FiraCode-Bold.ttf

Pokedex

Pokemon Explorer

Web Demo
Video Tutorials
Slides and Assets

pokedex3


Create new project

$ flutter create pokedex
$ cd pokedex

Add the necessary dependencies and configure launcher icon and splash screen

dev_dependencies:
  flutter_launcher_icons: ^0.9.0
  flutter_native_splash: ^1.1.8+4
  flutter_test:
    sdk: flutter
  lint: ^1.0.0
 
flutter_icons:
  android: "launcher_icon"
  ios: true
  remove_alpha_ios: true
  image_path: "assets/images/logo.png"
  adaptive_icon_background: "assets/images/logo.png"
  adaptive_icon_foreground: "assets/images/logo.png"

flutter_native_splash:
  color: "#EC4561"
  image: "assets/images/logo.png"
  android: true
  ios: true

Create the file analysis_options.yaml in the root directory and add the following line

include: package:lint/analysis_options.yaml

Add asset and font directories to pubspec.yaml

  assets:
    - assets/images/
    - assets/images/large/
    - assets/images/small/

  fonts:
    - family: Pokemon
      fonts:
        - asset: assets/fonts/Pokemon-Regular.ttf

Credits

Pokemon thumbnails and data provided by: https://github.com/fanzeyi/pokemon.json

Cryptospace

Cryptocurrency Tracker

Web Demo
Video Tutorials
Slides and Assets

cryptospace

API

coincap.io

Create new project

$ flutter create cryptospace
$ cd cryptospace

Add the necessary dependencies and configure launcher icon and splash screen

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0

dev_dependencies:
  flutter_launcher_icons: ^0.9.0
  flutter_native_splash: ^1.1.8+4
  flutter_test:
    sdk: flutter
  lint: ^1.0.0
 
flutter_icons:
  android: "launcher_icon"
  ios: true
  remove_alpha_ios: true
  image_path: "assets/images/logo.png"
  adaptive_icon_background: "assets/images/logo.png"
  adaptive_icon_foreground: "assets/images/logo.png"

flutter_native_splash:
  color: "#EC4561"
  image: "assets/images/logo.png"
  android: true
  ios: true

Create the file analysis_options.yaml in the root directory and add the following line

include: package:lint/analysis_options.yaml

Add asset and font directories to pubspec.yaml

  assets:
    - assets/images/

Constants

const baseUrl = 'api.coincap.io';
const cryptosPath = '/v2/assets';

const kGreenColor = Color(0xFF21CE99);
const kGreyColor = Color(0xFFA0A2A4);
const kBlackColor = Color(0xFF171A1E);
const kRedColor = Color(0xFFCF6679);

Notable

Note-taking made simple

Web Demo
Video Tutorials
Slides and Assets

notable_showcase

Create new project

$ flutter create notable
$ cd notable

Add the necessary dependencies and configure launcher icon and splash screen

dependencies:
  flutter:
    sdk: flutter
  hive: ^2.0.4
  hive_flutter: ^1.0.0
  intl: ^0.17.0
  keyboard_dismisser: ^2.0.0
  shared_preferences: ^2.0.6

dev_dependencies:
  build_runner: ^2.0.4
  flutter_launcher_icons: ^0.9.0
  flutter_native_splash: ^1.1.8+4
  flutter_test:
    sdk: flutter
  hive_generator: ^1.1.0
  lint: ^1.0.0

flutter_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/images/logo.png"
  adaptive_icon_background: "assets/images/logo.png"
  adaptive_icon_foreground: "assets/images/logo.png"

flutter_native_splash:
  color: "#181818"
  image: "assets/images/logo.png"
  android: true
  ios: true

Create the file analysis_options.yaml in the root directory and add the following line

include: package:lint/analysis_options.yaml

Add asset and font directories to pubspec.yaml

  fonts:
    - family: Satisfy
      fonts:
        - asset: assets/fonts/Satisfy/Satisfy-Regular.ttf

Add constants constants.dart

import 'package:flutter/material.dart';

const kYellowColor = Color(0xFFF8B425);
const kRedColor = Color(0xFFCF6679);
const kLightGrey = Color(0xFF212121);
const kDarkGrey = Color(0xFF181818);

Chatly

Real-time chat built with flutter and firebase

Web Demo
Video Tutorials
Slides and assets

chatly

Create new project

$ flutter create chatly
$ cd chatly

Dependencies

dependencies:
  adaptive_dialog: ^1.1.0
  cloud_firestore: ^2.4.0
  firebase_auth: ^3.0.1
  firebase_core: ^1.4.0
  flutter:
    sdk: flutter
  keyboard_dismisser: ^2.0.0
  timeago: ^3.1.0
  validators: ^3.0.0

dev_dependencies:
  flutter_launcher_icons: ^0.9.1
  flutter_native_splash: ^1.2.1
  flutter_test:
    sdk: flutter
  lint: ^1.5.3

flutter_icons:
  android: "launcher_icon"
  ios: true
  remove_alpha_ios: true
  image_path: "assets/images/logo.png"
  adaptive_icon_background: "assets/images/logo.png"
  adaptive_icon_foreground: "assets/images/logo.png"

flutter_native_splash:
  color: "#CD84F1"
  image: "assets/images/logo.png"
  android: true
  ios: true

Configuring font

  fonts:
    - family: VT323
      fonts:
        - asset: assets/fonts/VT323-Regular.ttf

Constants

import 'package:flutter/material.dart';

const kPurpleColor = Color(0xFFCD84F1);
const kDarkGrey = Color(0xFF181818);
const kLightGrey = Color(0xFF212121);

Firebase web dependencies

<script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-firestore.js"></script>

Create the file analysis_options.yaml in the root directory and add the following line

include: package:lint/analysis_options.yaml
You might also like...

Decentralized SkyDB-based alternative to Twitter, YouTube and Instagram with a native iOS, Android and web app.

Decentralized SkyDB-based alternative to Twitter, YouTube and Instagram with a native iOS, Android and web app.

SkyFeed SkyFeed is a decentralized SkyDB-based alternative to Twitter, YouTube and Instagram with a native Android, web and (soon) iOS app. Use You ne

Oct 28, 2022

📱 CyBear Jinni App is the app to control CyBear Jinni Hub 💡 remotely from your Android, IOS and Web Browser

📱 CyBear Jinni App is the app to control CyBear Jinni Hub 💡 remotely from your Android, IOS and Web Browser

CyBear Jinni App Welcome This repository is in charge of the CyBear Jinni App and is part of the CyBear Jinni Smart Home system. The CyBear Jinni App

Dec 1, 2022

Video player-2.2.10 - A Flutter plugin for iOS, Android and Web for playing back video on a Widget surface

Video player-2.2.10 - A Flutter plugin for iOS, Android and Web for playing back video on a Widget surface

Video Player plugin for Flutter A Flutter plugin for iOS, Android and Web for pl

Sep 29, 2022

Flutter application that implements socket.io in Node.js Works in - Android, iOS and Web

Flutter application that implements socket.io in Node.js Works in - Android, iOS and Web

Quick Chat - Flutter Flutter application that implements socket.io in Node.js Works in - Android, iOS and Web This repo only contains Flutter (fronten

Dec 23, 2022

Sharezone is a collaborative school organization app for iOS, Android, macOS and web.

Sharezone is a collaborative school organization app for iOS, Android, macOS and web.

Download Sharezone Android iOS macOS Web Sharezone is a collaborative school organization app for iOS, Android, macOS and web. With Sharezone pupils,

Dec 18, 2022

Task List application developed in Dart language with SDK Flutter for Android, iOS and Web

Task List application developed in Dart language with SDK Flutter for Android, iOS and Web

Task List application developed in Dart language with SDK (Software Development Kit) Flutter for Android, iOS and Web.

Jun 2, 2022

A Flutter 2D RPG Game Engine On Web & Android & IOS.

DevilF Engine A Flutter 2D RPG Game Engine On Web & Android & IOS. The Devilf Engine Is A Open Source 2D Game Engine. The Engine Is Development Using

Oct 20, 2022

A flag Flutter package for Android / iOS / Web.

A flag Flutter package for Android / iOS / Web.

flag A flag Flutter package for Android / iOS / Web. Mobile Based by https://github.com/dnfield/flutter_svg , Web Based by Image.network Screenshot Sv

Dec 8, 2022

Front-end of multiplayer web3 games implemented with Flutter to run on all platforms (Web, Android, iOS, Linux, Window, macOS, TV-OS)

Front-end of multiplayer web3 games implemented with Flutter to run on all platforms (Web, Android, iOS, Linux, Window, macOS, TV-OS)

Nov 15, 2022
Owner
Mohamed Ibrahim
Founder @ humansintech.io | Software Engineer
Mohamed Ibrahim
Hybrid App build on flutter SDK able to run on Android, IOS, web, desktop

Codeforces Visualizer APP Ready to use Flutter Application. Uses codeforces API. Useful for codeforces programmers. ScreenShots Single User Page Compa

vikas yadav 13 Dec 31, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

AnTler 140 Dec 30, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Bits Dojo 606 Dec 27, 2022
App to learn how to code with a lot of great courses and ideas of projects to do, focused on productivity and fast learn. 💻

skoola A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

Batista Tony 3 Oct 29, 2021
An admin panel aplication written with Flutter, aiming work with apps responsiveness.

admin_panel A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

Samilly Nunes 2 Oct 23, 2021
Flutter Web application having splash screen and providing Web view Using web view packege.

Webview with Splash Screen in Flutter Flutter Web View With Splash Screen. Subscribe Our YouTube Channel. Visit Website Demo OutPut ?? Links Getting S

Habib ullah 1 Dec 7, 2021
Flutter basic desktop project. Desktop todo app.

Glory Todo Desktop Basic and Primitive Flutter Desktop Project! Goal My goal is to accept my inexperience without worrying about the plugin shortcomin

Özgür 52 Dec 3, 2022
This plugin allows Flutter desktop apps to resizing and repositioning the window.

window_manager This plugin allows Flutter desktop apps to resizing and repositioning the window. window_manager Platform Support Quick Start Installat

LeanFlutter 346 Jan 3, 2023
This plugin allows Flutter desktop apps to defines system/inapp wide hotkey (i.e. shortcut).

hotkey_manager This plugin allows Flutter desktop apps to defines system/inapp wide hotkey (i.e. shortcut). hotkey_manager Platform Support Quick Star

LeanFlutter 81 Dec 21, 2022
Flutter UI Kits for mobile, tablet, desktop and web application

UIKits2 A complete UIs for mobile and tablet, which include 16 categories. Start SignUp & Login Walkthrough Loading Profiles Feed Article Activity Cre

Anuchit Chalothorn 25 Oct 8, 2022