Hướng Nghiệp Dữ Liệu

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

Được viết bởi Admin|0 lượt xem
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)

Đâ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 Google ✅ 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) Google ✅ 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ý:

  1. Flutter SDK + Git + VS Code → đã chạy được app trên Chrome (flutter run -d chrome).
  2. Android Studio + Android SDK → chạy app trên điện thoại Android thật.
  3. 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 doctor sẽ 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:

  1. sudo gem install cài vào Ruby hệ thống và có thể lỗi quyền → dùng brew install cocoapods thay thế.
  2. Lỗi liên quan tới gem ffi → thêm arch -arm64 khi 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:

  1. Đừ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.
  2. Tập thói quen chạy flutter doctor mỗi khi môi trường có vấn đề, và flutter clean trước khi báo lỗi build kỳ lạ.
  3. 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

  1. Có nên học Flutter năm 2026? Lộ trình khóa học lập trình Flutter
  2. Cài đặt Flutter trên Windows, macOS, Linux – chi tiết từng bước (bài này)
  3. Dart cho người mới: 10 khái niệm cần nắm trước khi viết app Flutter
  4. Widget trong Flutter là gì? Hiểu StatelessWidget và StatefulWidget
  5. 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ả?