Cài đặt Flutter trên Windows, macOS, Linux – chi tiết từng bước

Tóm tắt nhanh
Hướng dẫn cài đặt Flutter chi tiết cho Windows, macOS và Linux: chuẩn bị gì, từng bước, cách đọc flutter doctor và 8 lỗi hay gặp kèm cách sửa.
Mục lục bài viết (37)
- Bạn thực sự cần cài những gì?
- Yêu cầu hệ thống thật
- Chọn hướng đi trước khi cài
- Nguyên tắc chung: đường dẫn không dấu, không khoảng trắng
- Cài đặt trên Windows
- Bước 1 — Cài Git
- Bước 2 — Bật Developer Mode
- Bước 3 — Tải và giải nén Flutter SDK
- Bước 4 — Thêm Flutter vào PATH
- Bước 5 — Cài Android Studio và Android SDK
- Bước 6 — Chấp nhận license
- Bước 7 — Cài VS Code và extension
- Bước 8 — Chạy app đầu tiên
- Cài đặt trên macOS
- Bước 1 — Cài Xcode và command line tools
- Bước 2 — Tải Flutter SDK
- Bước 3 — Thêm vào PATH (và cái bẫy .zshrc vs .zprofile)
- Bước 4 — Cài CocoaPods
- Bước 5 — Android Studio và Android SDK
- Bước 6 — Kiểm tra
- Cài đặt trên Linux
- Cách 1 — Snap (nhanh nhất)
- Cách 2 — Tải thủ công (khuyến nghị)
- Nếu bạn muốn chạy app dạng desktop Linux
- Cách đọc flutter doctor — phần quan trọng nhất bài này
- Chạy app trên emulator hay điện thoại thật?
- Quản lý phiên bản Flutter
- Checklist kiểm tra sau khi cài
- Câu hỏi thường gặp
- Có cần cài Dart riêng không?
- Không có máy Mac thì học Flutter được không?
- Cài Flutter có ảnh hưởng gì đến máy không? Gỡ thế nào?
- Laptop 4 GB RAM có học Flutter được không?
- Vì sao flutter create lại sinh ra cả thư mục ios, web, windows?
- Cần bao lâu để xong?
- Bước tiếp theo
- Series 5 bài học Flutter cho người mới
Đây là bài thứ hai trong series 5 bài về Flutter. Bài đầu trả lời "có nên học Flutter và học theo lộ trình nào"; bài này đưa bạn từ máy trắng đến app Flutter chạy trên thiết bị thật.
Cài đặt là bước 0, không phải bước học. Nhưng đây lại là chỗ nhiều người dừng lại nhất: PATH sai, thiếu cmdline-tools, flutter doctor báo đỏ một dòng rồi không biết sửa ở đâu. Bài này đi chậm đúng chỗ khó đó, và có hẳn một mục dạy cách đọc flutter doctor — kỹ năng bạn sẽ dùng lại mỗi lần đổi máy.
Bạn thực sự cần cài những gì?
Nhiều bạn tưởng chỉ cần tải Flutter về là xong. Thực tế một máy phát triển Flutter gồm 5 thành phần, mỗi thứ do một bên quản lý:
| Thành phần | Ai cung cấp | Bắt buộc? | Ghi chú |
|---|---|---|---|
| Flutter SDK | ✅ | Kèm luôn Dart SDK — bạn không cần cài Dart riêng | |
| Git | git-scm.com | ✅ | Flutter dùng Git để cập nhật chính nó và tải package từ pub.dev |
| Android Studio (+ Android SDK, JDK) | ✅ nếu làm Android | Android Studio chỉ để lấy SDK Manager và emulator; code vẫn viết bằng VS Code | |
| Xcode (+ CocoaPods) | Apple | Chỉ khi build iOS | Bắt buộc phải có máy macOS |
| Editor | Microsoft | ✅ | VS Code + 2 extension Dart và Flutter là đủ |
Một điểm khiến nhiều người mới bối rối: JDK (Java) không dùng để viết Flutter. Flutter viết bằng Dart, nhưng bước build app Android gọi Gradle, và Gradle cần JDK. Vì vậy bạn cứ để Android Studio tự cài JDK đi kèm, đừng cài Java riêng rồi lệch phiên bản.
Yêu cầu hệ thống thật
Cấu hình công bố trên trang chủ Flutter thường ghi "4 GB RAM, 2.8 GB dung lượng". Con số đó chỉ đúng cho riêng Flutter SDK. Cài thật sẽ tốn nhiều hơn:
| Mục | Dung lượng thật |
|---|---|
| Flutter SDK (giải nén) | ~1.5–3 GB |
| Android SDK + build-tools + platform | ~8–15 GB |
| Android Studio | ~1–2 GB |
| Emulator (mỗi máy ảo) | ~8–10 GB |
| Xcode (macOS) | ~15–40 GB |
Khuyến nghị thực tế: 8 GB RAM là mức tối thiểu để chạy emulator không giật; 16 GB thì thoải mái với emulator + VS Code + Chrome + Figma cùng lúc. Ổ cứng nên còn trống ít nhất 40 GB. Nếu máy chỉ có 8 GB RAM và ổ HDD, hãy ưu tiên chạy trên điện thoại thật thay vì emulator — nhanh hơn rất nhiều.
Chọn hướng đi trước khi cài
Bạn không cần cài mọi thứ trong một buổi. Thứ tự hợp lý:
- Flutter SDK + Git + VS Code → đã chạy được app trên Chrome (
flutter run -d chrome). - Android Studio + Android SDK → chạy app trên điện thoại Android thật.
- Xcode + CocoaPods (chỉ macOS) → chạy app trên iPhone.
Điểm hay của Flutter là bước 1 đã cho bạn thấy app chạy, nên đừng để việc cài Xcode chặn bạn học Dart. Nếu bạn chỉ có Windows, cứ học Android trước; phần iOS làm sau trên máy Mac.
Nguyên tắc chung: đường dẫn không dấu, không khoảng trắng
Trước khi làm bất cứ bước nào, nhớ nguyên tắc này:
Đặt Flutter SDK ở đường dẫn không có dấu tiếng Việt, không có khoảng trắng, không có ký tự đặc biệt.
Ví dụ tốt: C:\src\flutter, C:\dev\flutter, /Users/tenban/development/flutter.
Ví dụ sai: C:\Users\Nguyễn Văn A\My Documents\flutter SDK.
Vì sao? Chuỗi build của Flutter (Gradle, CMake, script shell) chạy qua nhiều lớp, và mỗi lớp xử lý khoảng trắng/dấu một kiểu khác nhau. Đường dẫn có dấu hoặc khoảng trắng là nguyên nhân của rất nhiều lỗi "không rõ nguyên nhân" mà flutter doctor không chỉ ra được.
Trên Windows, tên tài khoản người dùng của bạn vẫn có thể có dấu. Do đó đừng giải nén Flutter vào Desktop hay Documents, hãy tạo thẳng C:\src.
Cài đặt trên Windows
Bước 1 — Cài Git
Tải tại git-scm.com, cài mặc định, cứ để "Git from the command line and also from 3rd-party software".
Sau khi cài xong, mở Git Bash (không phải PowerShell) và bật hỗ trợ đường dẫn dài — Flutter sinh đường dẫn build rất sâu, Windows giới hạn 260 ký tự sẽ làm lỗi build khó hiểu:
[object Object]Bước 2 — Bật Developer Mode
Vào Settings → System → For developers → Developer Mode: On.
Bước này nghe không liên quan nhưng thực chất rất quan trọng: Flutter dùng symlink cho các plugin. Không bật Developer Mode, bạn sẽ gặp lỗi khi cài package đầu tiên:
[object Object]Bước 3 — Tải và giải nén Flutter SDK
Tải bản stable tại trang chủ Flutter (file .zip), sau đó giải nén ra C:\src\flutter.
Cấu trúc sau khi giải nén phải là:
[object Object]Nếu bạn thấy C:\src\flutter\flutter\bin\flutter.bat thì đã giải nén thừa một tầng thư mục — lỗi rất phổ biến và làm PATH đúng vẫn không chạy.
Bước 4 — Thêm Flutter vào PATH
Mở Start → "Edit the system environment variables" → Environment Variables, sửa biến Path của User (không phải System) và thêm dòng:
[object Object]Đóng tất cả cửa sổ terminal đang mở rồi mở terminal mới. Biến môi trường chỉ được nạp khi tiến trình khởi động lại — đây là lý do nhiều bạn "đã thêm PATH mà vẫn flutter: command not found".
Kiểm tra:
[object Object]Bước 5 — Cài Android Studio và Android SDK
Tải Android Studio, cài mặc định. Khi mở lần đầu, chọn Standard setup.
Sau đó vào More Actions → SDK Manager, tab SDK Tools, tick:
- Android SDK Command-line Tools (latest) ← thiếu cái này
flutter doctorsẽ báo đỏ - Android SDK Platform-Tools (chứa
adb) - Android SDK Build-Tools
Bước 6 — Chấp nhận license
[object Object]Nhấn y cho từng giấy phép.
Bước 7 — Cài VS Code và extension
Cài VS Code, sau đó cài đúng 2 extension:
- Dart (publisher: Dart Code)
- Flutter (publisher: Dart Code)
Extension Flutter sẽ tự cài Dart nếu bạn quên. Sau khi cài, VS Code có thêm nút chạy app ở góc trên phải, và tính năng hot reload hoạt động bằng nút "⚡".
Bước 8 — Chạy app đầu tiên
[object Object]flutter create sinh project cho mọi nền tảng đang bật (Android, iOS, web, Windows). Lần chạy đầu sẽ mất vài phút vì Gradle tải dependency; các lần sau nhanh hơn nhiều.
Cài đặt trên macOS
Bước 1 — Cài Xcode và command line tools
Từ App Store cài Xcode (nặng, tải lâu). Sau khi cài, chạy 2 lệnh sau trong Terminal:
[object Object]Cả hai lệnh đều cần sudo. Thiếu -runFirstLaunch, Flutter sẽ báo Xcode "not installed" dù bạn đã cài.
Để build iOS bạn cũng cần chấp nhận license: mở Xcode một lần và làm theo hướng dẫn.
Bước 2 — Tải Flutter SDK
Cách ổn định nhất là tải file .zip từ trang chủ rồi giải nén vào ~/development:
[object Object]Homebrew cũng có (brew install --cask flutter) nhưng không khuyến nghị cho người mới: khi Flutter tự cập nhật nó sẽ ghi vào thư mục do Homebrew quản lý, dẫn tới cảnh báo quyền và dễ vỡ môi trường sau này.
Bước 3 — Thêm vào PATH (và cái bẫy .zshrc vs .zprofile)
macOS Catalina trở lên dùng shell zsh. Có hai file cấu hình và chúng nạp trong hai tình huống khác nhau:
| File | Khi nào được nạp |
|---|---|
~/.zshrc |
Mỗi lần mở terminal tương tác |
~/.zprofile |
Mỗi lần mở login shell |
Thêm PATH vào:
[object Object]Cái bẫy: bạn export trực tiếp trong terminal thì flutter chạy ngay, nhưng sau khi đóng cửa sổ là mất. Hoặc bạn thêm vào .zshrc — chạy tốt trong Terminal nhưng không chạy khi IDE/CI dùng login shell, dẫn tới lỗi rất khó hiểu. Với PATH, hãy dùng .zprofile.
Bước 4 — Cài CocoaPods
CocoaPods là công cụ quản lý thư viện native của iOS mà plugin Flutter dùng:
[object Object]Trên chip Apple Silicon (M1 trở lên) có hai vấn đề hay gặp:
sudo gem installcài vào Ruby hệ thống và có thể lỗi quyền → dùngbrew install cocoapodsthay thế.- Lỗi liên quan tới gem
ffi→ thêmarch -arm64khi chạy, ví dụarch -arm64 pod install.
Nếu bạn chưa làm iOS, có thể bỏ qua bước này và quay lại sau.
Bước 5 — Android Studio và Android SDK
Trên macOS bạn vẫn cần Android Studio nếu muốn build Android. Các bước giống Windows: SDK Manager → tick Command-line Tools, rồi flutter doctor --android-licenses.
Bước 6 — Kiểm tra
[object Object]Trên macOS lành, bạn sẽ thấy 5 dòng xanh: Flutter, Android toolchain, Xcode/CocoaPods, một editor, Connected device.
Cài đặt trên Linux
Cách 1 — Snap (nhanh nhất)
[object Object]Snap tiện nhưng không phù hợp cho mọi thứ: một số package plugin không nhìn thấy SDK đúng vị trí. Với người mới học thì được, làm dự án thật nên dùng cách 2.
Cách 2 — Tải thủ công (khuyến nghị)
[object Object]Sau đó cài Android Studio, tick Command-line Tools trong SDK Manager, và:
[object Object]Nếu bạn muốn chạy app dạng desktop Linux
Cần thêm bộ công cụ build C++:
[object Object]Đây là lỗi thường gặp trên Linux: flutter doctor báo thiếu ninja hoặc GTK 3.0 development libraries khi bạn bật hỗ trợ desktop.
Cách đọc flutter doctor — phần quan trọng nhất bài này
flutter doctor kiểm tra 5–6 nhóm và in ra [✓] (ổn), [!] (cảnh báo, vẫn dùng được) hoặc [✗] (lỗi, chặn). Bạn không cần mọi dòng đều xanh — chỉ cần xanh những nền tảng bạn thực sự dùng.
Bảng dưới đây là các thông báo hay gặp nhất và cách xử lý:
| Thông báo | Nghĩa | Cách sửa |
|---|---|---|
flutter: command not found |
PATH chưa đúng hoặc terminal cũ | Kiểm tra flutter\bin; đóng hết terminal/IDE rồi mở lại |
Android toolchain — cmdline-tools component is missing |
Thiếu Command-line Tools | Android Studio → SDK Manager → SDK Tools → tick Android SDK Command-line Tools |
Android license status unknown |
Chưa chấp nhận license | flutter doctor --android-licenses |
Xcode not installed (macOS) |
Chưa trỏ đúng Xcode | Chạy 2 lệnh xcode-select + xcodebuild -runFirstLaunch ở trên |
CocoaPods not installed (macOS) |
Thiếu CocoaPods | brew install cocoapods (Apple Silicon) hoặc sudo gem install cocoapods |
Building with plugins requires symlink support (Windows) |
Chưa bật Developer Mode | Settings → For developers → Developer Mode: On |
Unable to locate Android SDK |
Sai đường dẫn SDK | flutter config --android-sdk <đường-dẫn-SDK> |
No devices found |
Chưa bật USB debugging hoặc chưa mở emulator | Bật Developer options + USB debugging trên điện thoại; hoặc flutter emulators --launch <tên> |
Flutter plugin not installed (VS Code) |
Thiếu extension | Cài extension Dart và Flutter |
Android SDK file not found: adb |
Thiếu platform-tools | SDK Manager → tick Android SDK Platform-Tools |
! ở dòng Channel |
Bạn đang ở kênh beta/dev | flutter channel stable && flutter upgrade |
Mẹo thực dụng: flutter doctor -v in chi tiết đường dẫn từng thành phần. Khi bế tắc, dòng đầu tiên sau chữ • thường là manh mối thật — ví dụ nó chỉ đúng thư mục SDK mà Flutter đang tìm nhưng không thấy.
Chạy app trên emulator hay điện thoại thật?
| Emulator | Điện thoại thật | |
|---|---|---|
| Cài đặt | Nặng (8–10 GB, cần RAM) | Nhẹ (chỉ cần bật USB debugging) |
| Tốc độ | Chậm hơn, đặc biệt khi hot reload app lớn | Nhanh, cảm giác thật |
| Kiểm tra cảm ứng, hiệu năng | Không chính xác | Chính xác |
| Test nhiều kích thước màn hình | Rất tiện (tạo nhiều máy ảo) | Phải có nhiều máy |
| Chạy đa nền tảng (web/desktop) | Không cần | Không cần |
Gợi ý: máy yếu dùng điện thoại thật làm chính, mở emulator khi cần kiểm tra màn hình nhỏ/lớn. Nếu chỉ đang học Dart và widget, chạy flutter run -d chrome là đủ và nhẹ nhất.
Để xem có gì đang kết nối:
[object Object]Quản lý phiên bản Flutter
Flutter có 3 kênh:
[object Object]Người mới nên ở kênh stable. Chỉ dùng beta khi bạn cần một tính năng vừa ra và chấp nhận rủi ro có lỗi.
Với người đi làm, nên dùng FVM (Flutter Version Management) để mỗi dự án ghim một phiên bản riêng:
[object Object]Lợi ích: dự án cũ không bị vỡ khi bạn nâng Flutter cho dự án mới. Đây là thói quen rất đáng tập sớm.
Checklist kiểm tra sau khi cài
Chạy lần lượt, tất cả phải trả kết quả:
[object Object]Trong lúc app chạy, thử hot reload: sửa một chữ trong lib/main.dart, nhấn r trong terminal. Giao diện đổi ngay mà không mất trạng thái — đây là trải nghiệm khiến Flutter khác biệt, và bạn nên thử ngay từ buổi đầu.
Nếu cả 5 bước trên chạy được, môi trường của bạn đã sẵn sàng. Đừng cố làm cho flutter doctor xanh tất cả nếu bạn không dùng iOS hay desktop — chỉ tốn thời gian.
Câu hỏi thường gặp
Có cần cài Dart riêng không?
Không. Dart SDK nằm sẵn trong Flutter SDK. Cài Dart riêng rồi sẽ dễ sinh hai phiên bản Dart lệch nhau và gây lỗi khi build. Lệnh dart bạn dùng chính là dart đi kèm Flutter.
Không có máy Mac thì học Flutter được không?
Hoàn toàn được. Bạn code, chạy và build Android ngay trên Windows hoặc Linux. Chỉ bước build file .ipa cho iOS mới bắt buộc macOS. Rất nhiều người học Flutter vài tháng đầu mà chưa từng mở Xcode.
Cài Flutter có ảnh hưởng gì đến máy không? Gỡ thế nào?
Flutter SDK chỉ là một thư mục, gỡ bằng cách xoá thư mục và xoá dòng PATH đã thêm. Phần nặng nhất là Android Studio và Android SDK — gỡ qua Control Panel như ứng dụng thường.
Laptop 4 GB RAM có học Flutter được không?
Được, nếu bạn bỏ emulator và dùng điện thoại thật hoặc flutter run -d chrome. Emulator Android trên máy 4 GB RAM sẽ giật tới mức không dùng nổi; còn hot reload trên thiết bị thật vẫn nhanh.
Vì sao flutter create lại sinh ra cả thư mục ios, web, windows?
Vì một project Flutter mặc định hỗ trợ mọi nền tảng đang bật. Nếu bạn chỉ làm Android, có thể tạo gọn hơn:
[object Object]Cần bao lâu để xong?
Trung bình 30–60 phút nếu mạng tốt. Phần lâu nhất là tải Xcode (macOS) và Android SDK. Nếu bạn gặp lỗi, hãy dành thời gian đọc flutter doctor -v thay vì cài lại từ đầu — cài lại gần như không bao giờ sửa được lỗi PATH.
Bước tiếp theo
Bạn đã có app đầu tiên chạy được. Việc nên làm ngay:
- Đừng vội học UI. Dành vài buổi học Dart cho chắc — nền tảng này quyết định tốc độ học giao diện của bạn: Dart cho người mới: 10 khái niệm cần nắm.
- Tập thói quen chạy
flutter doctormỗi khi môi trường có vấn đề, vàflutter cleantrước khi báo lỗi build kỳ lạ. - Nếu bạn băn khoăn toàn bộ lộ trình học, xem lại bài mở đầu: Có nên học Flutter năm 2026? Lộ trình khóa học.
Bài 3 trong series sẽ đi vào ngôn ngữ Dart, và bài 4 là widget — lúc đó bạn sẽ thấy việc cài đặt hôm nay là bước nhẹ nhất trong cả lộ trình.
Series 5 bài học Flutter cho người mới
- Có nên học Flutter năm 2026? Lộ trình khóa học lập trình Flutter
- Cài đặt Flutter trên Windows, macOS, Linux – chi tiết từng bước (bài này)
- Dart cho người mới: 10 khái niệm cần nắm trước khi viết app Flutter
- Widget trong Flutter là gì? Hiểu StatelessWidget và StatefulWidget
- Xây dựng app Flutter đầu tiên: bố cục, điều hướng và gọi API
Sau khi hết series, nếu bạn muốn đưa AI vào app, đọc bài nâng cao Tích hợp Gemini AI vào app Flutter bằng ví dụ thực tế.
Nếu muốn học có người sửa bài và làm dự án thật từ đầu, bạn có thể xem khóa học Flutter thực chiến, lộ trình nâng cao hoặc lịch khai giảng.
Đọc thêm: Hot Reload & Hot Restart là gì? Vì sao Flutter nhanh hơn tất cả?
