Cũ nhưng mới, quản lý các phiên bản Flutter cho từng dự án.

Flutter là một bộ công cụ giao diện người dùng toàn diện, SDK mã nguồn mở và miễn phí cho phát triển ứng dụng di động, desktop, và web. Khả năng đa nền tảng của Flutter giúp nhà phát triển xây dựng ứng dụng hiệu quả trên cả IOS và Android, giảm gánh nặng duy trì mã nguồn cho từng nền tảng. Tuy nhiên, khi cần quản lý và duy trì các dự án với các phiên bản Flutter khác nhau, sự linh hoạt của Flutter Version Management (FVM) trở nên quan trọng. FVM không chỉ giúp chuyển đổi linh hoạt giữa các phiên bản mà còn tối ưu hóa thời gian quản lý, giúp nhà phát triển duy trì và phát triển dự án một cách hiệu quả.

1. Vấn đề gặp phải:

Hãy tưởng tượng bạn đang đối mặt với thách thức phát triển một dự án với yêu cầu sử dụng Flutter version mới nhất (3.16.5) cho phần nền tảng hiện tại. Đồng thời, bạn cũng cần tiếp tục phát triển các phần tiếp theo của dự án khác, nơi yêu cầu sử dụng một phiên bản Flutter cũ hơn (3.3.3). Điều này đặt ra câu hỏi nan giải: Làm thế nào để quản lý hiệu quả việc chuyển đổi giữa các phiên bản của hai dự án khác nhau. Bạn có thể xử lý theo hướng sau:

Bạn truy cập vào thư mục gốc của Flutter, tại folder "bin". Bạn thực hiện các câu lệnh:

[--version] là version mà bạn muốn chuyển đổi
Sử dụng flutter --version để apply version vừa cài đặt.

Cách triển khai truyền thống có thể đúng, nhưng vấn đề là bạn sẽ mất thời gian để checkout version, tải về Flutter SDK cho phiên bản đó, cài đặt và áp dụng nó. Điều này hợp lý khi bạn có thời gian, nhưng nếu bạn phải liên tục chuyển đổi giữa các phiên bản, điều này trở nên không hiệu quả. Để giải quyết vấn đề này, Flutter Version Management (FVM) là lựa chọn lý tưởng. FVM cho phép bạn dễ dàng chuyển đổi giữa các phiên bản Flutter mà không gặp phải quá trình chờ đợi và cài đặt lặp lại. Điều này giúp tối ưu hóa quá trình phát triển, đặc biệt là khi bạn phải làm việc với nhiều dự án đòi hỏi các phiên bản khác nhau.

2. FVM là gì?

Flutter Version Management là 1 hệ thống quản lý các phiên bản Flutter khác nhau. FVM giúp đảm bảo ứng dụng của bạn được xây dựng một cách đồng nhất bằng cách tham chiếu đến phiên bản Flutter SDK được sử dụng cho từng dự án cụ thể. Nó cũng cho phép bạn cài đặt nhiều phiên bản Flutter khác nhau để kiểm tra và thử nghiệm các phiên bản Flutter sắp tới với ứng dụng của bạn mà không phải chờ đợi quá trình cài đặt Flutter mỗi lần.

FVM helps with the need for consistent app builds by referencing the Flutter SDK version used on a per-project basis. It also allows you to have multiple Flutter versions installed to quickly validate and test upcoming Flutter releases with your apps without waiting for Flutter installation every time.

FVM sẽ khắc phục các vần đề gì?

  • Cần có nhiều hơn một phiên bản Flutter SDK cùng một lúc.
  • Để kiểm thử các tính năng mới của SDK, cần chuyển đổi giữa các Kênh (Channels).
  • Việc chuyển đổi giữa các Channels là chậm và đòi hỏi phải cài đặt lại mỗi lần.
  • Không có cách nào để theo dõi phiên bản SDK mới nhất đang hoạt động/đã sử dụng trong ứng dụng.
  • Các bản cập nhật lớn của Flutter yêu cầu di cư tất cả các ứng dụng Flutter trên máy.
  • Môi trường phát triển không đồng nhất giữa các nhà phát triển trong nhóm.

Mọi người có thể xem qua video sau để hiểu rõ thêm:

3. Hướng dẫn cài đặt FVM.

Ta đã tìm hiểu qua về FVM, tiếp sau đây. Ta sẽ tìm hiểu cách cài đặt FVM trên thiết bị.

Đối với MacOS hoặc Linux

brew tap leoafarias/fvm
brew install fvm

Đối với Window

choco install fvm

Sau khi cài đặt hoàn thành, tiến hành thực hiện câu lệnh sau:

dart pub global activate fvm

Đối với MacOS/Linux, sau khi cài đặt. Ta cần thực hiện thêm các câu lệnh sau:

Add path to .zshrc file:

Opent .zshrc file:
nano .zshrc
Copy and paste:
export PATH="$PATH":"$HOME/fvm/default/bin"
Save and exit (control + o -> Enter -> control + x)
Enter the value:
source .zshrc

Tiếp đến, ta sẽ tiến hành install các phiên bản Flutter mà mình cần sử dụng. Bước này các bạn có thể bỏ qua, vì khi ta dùng FVM trong dự án Flutter thì FVM sẽ kiểm tra phiên bản đó có hay không? Nếu không, nó sẽ tiến hành cài đặt.

Install FlutterSDK:

fvm install flutter_version

eg: fvm install 3.16.5

Sets Flutter SDK Version as a global:

fvm global flutter_version

eg: fvm global 3.3.3

4. Sử dụng FVM trong các dự án.

Sau khi hoàn thành các bước trên, để sử dụng FVM theo từng dự án. Ta sẽ mở dự án cần thiết lập FVM lên bằng IDE đang sử dụng (Android Studio / VSCode). Sau đó, thực hiện câu lệnh sau:

fvm use [version]

eg: fvm use 3.3.3

FVM sẽ tự động cấu hình folder: ".fvm" chứa cấu hình của Flutter Version tương ứng trong folder code của dự án.

Sau khi đã hoàn thành cài đặt, bạn cần mở file: ".gitignore" và thêm đoạn sau:

.fvm/

Do FVM là config tuỳ chỉnh dưới máy, nên ta không cần phải push thư mục này lên Github/Gitlab để quản lý.

Để chạy dự án, ta có thể sử dụng câu lệnh sau:

Với các IDE, khuyến khích các bạn nên thiết lập Flutter SDK để tối ưu việc thực hiện chạy dự án với FVM hơn.

Android Studio

Mở Android Studio và điều hướng đến Languages & Frameworks > Flutter hoặc tìm kiếm Flutter để mở cài đặt.
Thay đổi đường dẫn Flutter SDK bằng cách sao chép đường dẫn tuyệt đối của liên kết tượng trưng fvm trong thư mục gốc của dự án. Ví dụ: /absolute-project-path/.fvm/flutter_sdk
Áp dụng các thay đổi.
Khởi động lại Android Studio để thấy các cài đặt mới được áp dụng.

VSCode
Các bạn tìm tới file .vscode/settings.json và sử dụng config sau:

  "dart.flutterSdkPath": ".fvm/flutter_sdk",
  // Remove .fvm files from search
  "search.exclude": {
    "**/.fvm": true
  },
  // Remove from file watching
  "files.watcherExclude": {
    "**/.fvm": true
  }
}

5. Tài liệu tham khảo

Để tìm hiểu chi tiết hơn về FVM, các bạn có thể đọc tại link sau: https://fvm.app/docs/getting_started


Flutter Version Management (FVM) là một công cụ mạnh mẽ giúp giải quyết những thách thức liên quan đến quản lý phiên bản Flutter. Với tính linh hoạt và tiện ích tối ưu, FVM không chỉ giúp tiết kiệm thời gian mà còn đảm bảo sự ổn định trong quá trình phát triển ứng dụng. Hãy sử dụng FVM để đơn giản hóa công việc và tập trung vào việc xây dựng những ứng dụng xuất sắc. Bài viết của mình đến đây là kết thúc. Chúng ta sẽ gặp lại trong những bài viết mới về Flutter.