Bóc tách cấu trúc tệp/thư mục của một dự án Flutter
November 05, 2022
3 min read
Khi bạn khởi tạo một ứng dụng Flutter sử dụng câu lệnh flutter create app_name
, bạn sẽ thấy có rất nhiều tệp và thư mục được sinh ra. Điều này thực sự rất bình thường đối với những người đã có kinh nghiệm làm việc với Flutter. Tuy nhiên, đối với các bạn mới học hay tiếp cận, nó có thể gây ra một chút mơ hồ nhất định vì số lượng tệp và thư mục được sinh ra là khá nhiều. Vậy nên bài viết này sẽ giúp bạn có được một cái nhìn tổng quan nhất về cấu trúc tệp/thư mục của một project Flutter.
![Screen Shot 2022-11-05 at 14.53.14.png](https://tda-blog-resources.s3.ap-southeast-1.amazonaws.com/Screen_Shot_2022_11_05_at_14_53_14_e797393218.png)
![dart_tool_folder.png](https://tda-blog-resources.s3.ap-southeast-1.amazonaws.com/dart_tool_folder_2cf2f857b4.png)
- Thư mục
.dart_tool
bắt đầu được đưa vào từ Dart 2, được sử dụng bởi pub và các công cụ khác. Nó thay thế thư mục .pub kể từ bản phát hành SDK 2.0.0-dev.32.0
. - Bên trong bao gồm 2 thành phần chính mà ta cần quan tâm:
- Thư mục
flutter_build
: Lưu trữ các bộ nhớ đệm về bản build của Flutter. package_config.json
: Nơi chỉ định cụ thể vị trí và phiên bản (version) của những package, dependency hay thư viện mà project đang sử dụng.
![android_folder.png](https://tda-blog-resources.s3.ap-southeast-1.amazonaws.com/android_folder_8027449cbb.png)
- Là nơi chứa các cài đặt, tài nguyên cần thiết để chạy ứng dụng Flutter trên hệ điều hành Android. Các tệp/thư mục này tự động khởi tạo trong quá trình bạn tạo project.
- Các thành phần chính:
AndroidManifest.xml
: Chứa các thông tin cần thiết của ứng dụng như tên, quyền truy cập,…- Thư mục
res
: Chứa các tài nguyên không thể lập trình được (non-programmable) nhưng cần thiết cho ứng dụng như là ảnh, biểu tượng và phông chữ.
![assets_folder.png](https://tda-blog-resources.s3.ap-southeast-1.amazonaws.com/assets_folder_d64d6f8995.png)
- Lưu trữ các hình ảnh, phông chữ,… được sử dụng trong toàn bộ project.
![ios_folder.png](https://tda-blog-resources.s3.ap-southeast-1.amazonaws.com/ios_folder_36894d8992.png)
- Giống như thư mục
android
, đây là nơi chứa các cài đặt, tài nguyên cần thiết để chạy ứng dụng Flutter trên hệ điều hành IOS. - Các thành phần chính:
- Thư mục
Assets.xcassets
: Giống như thư mục res
của Android. Chứa các tài nguyên không thể lập trình được (non-programmable) nhưng cần thiết cho ứng dụng. Info.plist
: Giống như AndroidManifest.xml
. Chứa các thông tin cần thiết của ứng dụng như tên, quyền truy cập,…
- Do mỗi thư mục
lib
có cấu trúc khác nhau phụ thuộc vào từng dự án nên ở đây mình không đưa ra một cấu trúc cụ thể nào. - Tổng quan thì đây là thư mục quan trọng nhất của project, nơi mà chúng ta thực hiện xây dựng project.
- Mặc định thư mục
lib
sẽ chứa tệp main.dart
. Đây là đầu vào của ứng dụng nhưng cài đặt này ta có thể thay đổi được.
- Chứa các đoạn code kiểm thử phần mềm mà bạn định nghĩa.
- Được sinh ra ghi chạy câu lệnh
flutter pub get
. - Là nơi lưu trữ vị trí và phiên bản (version) của những package, dependency hay thư viện mà project đang sử dụng.
- Là một tệp văn bản thuần túy, trong đó mỗi dòng chứa mẫu hay định dạng của một tệp/thư mục bất kỳ nhằm bỏ qua chúng khi project được tải lên các nền tảng như
Github
, Gitlab
.
- Chứa những dữ liệu liên quan đến project đang được sử dụng.
- Tệp này phải được kiểm soát phiên bản (version) và không được chỉnh sửa một cách thủ công.
- Cấu hình trình phân tích, sử dụng cho việc phân tích code Dart để kiểm tra và cảnh báo lỗi trong dự án.
- Liệt kê các phiên bản (version) cụ thể của những package, dependency hay thư viện đang được sử dụng trong ứng dụng Flutter của bạn; và đảm bảo các phiên bản đó luôn nhất quán trên thiết bị của các developer khác nhau.
- Không nên có bất cứ một thay đổi nào ở tệp này bởi nó có thể gây ảnh hưởng đến các phiên bản (version) đang sử dụng .
- Là nơi chứa cấu hình cụ thể cho ứng dụng như là tên, phiên bản (version), môi trường,… Bạn có thể tinh chỉnh tùy ý sao cho phù hợp với mong muốn của bản thân cũng như cho ứng dụng chạy tốt nhất có thể.
- Bạn sẽ thường tạo ra thay đổi ở đây khi muốn thêm các thư viện bên ngoài vào project.
- Tệp
README.md
là một tệp định dạng đánh dấu (markdown), chủ yếu được sử dụng để mô tả dự án của bạn trong git repo. - Bạn có thể viết những thứ cụ thể của dự án như những thứ cần chuẩn bị để khởi chạy project một cách tốt nhất, những gì dự án của bạn làm hoặc cách sử dụng một số thư viện nhất định trong tệp,…
Hy vọng những phần mình đã tổng hợp ở trên có thể giúp ích được cho bạn trong quá trình học tập và làm quen với Flutter. Cảm ơn bạn đã dành thời gian đọc hết bài viết của mình.
(上記でまとめた部分が、Flutter の学習と理解のプロセスに役立つことを願っています 。 私の投稿全体を読んでいただきありがとうございます。)