Flutter Tutorial for Beginners: From Install to First App (Step-by-Step, 2026)

Every great Flutter app started with someone staring at a blank terminal. Let’s fix that.

Flutter is Google’s UI toolkit for building natively compiled apps for mobile, web, and desktop — all from a single Dart codebase. In 2026 it’s the dominant choice for cross-platform development, and getting from zero to a running app takes under 30 minutes if you follow the right steps. This tutorial gives you exactly that: no fluff, just a clean path from fresh machine to a live app on your device or emulator.

What you’ll have by the end: Flutter installed and verified, a new project created, and a real app running on Android or iOS — plus an understanding of why each step matters.


Table of Contents


Why Flutter in 2026?

Flutter isn’t popular because of hype — it’s popular because it solves a real problem. Before Flutter, building an app for both iPhone and Android meant writing it twice in two different languages. Flutter changed that. You write Dart once, and it compiles to native ARM code for both platforms.

Feature Flutter React Native Native (Swift/Kotlin)
Single codebase ✅ Yes ✅ Yes ❌ No
Compiled to native ✅ Yes (ARM) ⚠️ Partial (JS bridge) ✅ Yes
Custom UI rendering ✅ Own engine (Impeller) ❌ Uses native components ✅ Platform components
Hot reload ✅ Yes ✅ Yes ⚠️ Limited (Xcode previews)
Language Dart JavaScript / TypeScript Swift / Kotlin
Beginner-friendly ✅ Strong docs + tooling ⚠️ Requires JS knowledge ⚠️ Two separate ecosystems

Step 1: Install the Flutter SDK

Head to docs.flutter.dev/get-started/install and select your operating system. The official docs are the most up-to-date source — always start there.

OS Installation method Key gotcha
macOS Download zip or use Homebrew (brew install flutter) Xcode must also be installed for iOS development
Windows Download zip, extract to C:srcflutter Do not use C:Program Files — permission errors will occur
Linux Download zip or use snap install flutter --classic Android Studio must be installed separately

After extracting, add the Flutter bin directory to your system PATH. On macOS/Linux, add this line to your ~/.zshrc or ~/.bashrc:

On Windows, search for “Environment Variables” in the Start menu, find the Path variable under System Variables, and add the full path to flutterbin.


Step 2: Verify Your Setup with flutter doctor

Open a new terminal window (so the updated PATH takes effect) and run:

You’ll see output like this:

Symbol Meaning Action required
[✓] All good Nothing — move on
[!] Warning — non-critical issue Fix when you can, but won’t block basic development
[✗] Error — missing or broken dependency Must fix before you can build and run apps

For each [✗] item, run flutter doctor -v to get the detailed error message and follow its instructions. The two most common fixes are accepting Android SDK licenses (flutter doctor --android-licenses) and installing Xcode command line tools (xcode-select --install).


Step 3: Choose and Configure Your Editor

Flutter works with any editor, but two have first-class support:

Editor Plugin to install Best for
VS Code “Flutter” extension (installs Dart too) Beginners — fast, lightweight, great autocomplete
Android Studio “Flutter” plugin (installs Dart too) Heavier but includes the AVD emulator manager built-in

After installing the plugin, restart your editor. You should now get Dart syntax highlighting, widget autocomplete, and the ability to run your app directly from the editor toolbar.


Step 4: Create Your First Project

Navigate to wherever you keep your code projects and run:

Flutter generates a complete, working project with a sample counter app already written. Open the folder in your editor:


Step 5: Understand the Project Structure

Don’t just run the app blindly — take 2 minutes to understand what was generated. You’ll work with these files constantly:

File / Folder What it’s for How often you’ll touch it
lib/main.dart App entry point — your Dart code starts here Constantly
pubspec.yaml Add packages, declare fonts and image assets Often
android/ & ios/ Platform-specific configs (app icon, permissions, signing) Occasionally
test/ Widget and unit tests Later, once you’re comfortable

Open lib/main.dart. You’ll see the generated counter app — a StatefulWidget that increments a number when you press a button. Don’t worry about understanding all of it yet; we build on these concepts step by step in the rest of this series.


Step 6: Run the App

You need a target to run on. You have two options:

Option How to set up Pros / Cons
Android Emulator Create via Android Studio → Device Manager → Create Device No physical device needed; uses your computer’s RAM
iOS Simulator (macOS only) Open Xcode → Window → Devices and Simulators Requires Xcode; fast on Apple Silicon
Physical Android device Enable Developer Options → USB Debugging → plug in via USB Most realistic; requires a USB cable

To enable Developer Options on Android: go to Settings → About Phone and tap Build Number seven times. Then go back to Settings and you’ll see Developer Options — enable USB Debugging inside it.

Once your device or emulator is running, check that Flutter can see it:

You should see your device listed. Now run the app:

The first build takes 1–2 minutes while Flutter compiles everything. Subsequent runs are much faster. When it’s ready, you’ll see the Flutter counter app on your device — a blue app bar, a number in the center, and a floating + button.


Step 7: Try Hot Reload

Hot reload is one of Flutter’s biggest productivity features. While the app is running, open lib/main.dart and find this line:

Save the file. The app updates on-device in under a second — without losing the current state (the counter value stays where it was). That’s hot reload.

Feature Shortcut What it does State preserved?
Hot Reload r in terminal / ⌘S in VS Code Injects updated code into the running app ✅ Yes
Hot Restart R in terminal Fully restarts the app and re-runs main() ❌ No — state resets
Full Rebuild Stop (q) then flutter run Full recompile — needed for native/config changes ❌ No

What to Learn Next

You’ve got Flutter installed, your environment verified, a project created, and a live app running with hot reload. That’s the entire foundation. Here’s where the real learning begins:

Topic Why it matters Where to start
Widgets & Layouts Everything in Flutter is a widget — this is the core mental model Widget catalog
StatefulWidget & setState How UI reacts to user actions and data changes Our Notes App Part 1
Navigation Moving between screens and passing data Flutter Navigation docs
Local Storage Persisting data so it survives app restarts Our Notes App Part 2
State Management Scaling beyond simple setState for larger apps Flutter state management guide

The best next step from here is our two-part series building a full notes app — it teaches widgets, state, navigation, and persistence in sequence, each concept building on the last.

Show 7 Comments

7 Comments

Leave a Reply