Cấu trúc dự án Flutter
1. Tổng quan cấu trúc
Khi tạo project Flutter mới, bạn sẽ thấy cấu trúc sau:
my_app/
├── android/ # Native Android code
├── ios/ # Native iOS code
├── lib/ # Dart code (chính)
│ └── main.dart # Entry point
├── test/ # Unit tests
├── web/ # Web support
├── linux/ # Linux desktop
├── macos/ # macOS desktop
├── windows/ # Windows desktop
├── pubspec.yaml # Dependencies
├── pubspec.lock # Lock file
├── analysis_options.yaml
└── README.md2. Thư mục lib/ - Code chính
Đây là thư mục quan trọng nhất, chứa toàn bộ Dart code:
lib/
├── main.dart # Entry point
├── screens/ # Các màn hình
├── widgets/ # Custom widgets
├── models/ # Data models
├── services/ # API, database
└── utils/ # Utilitiesmain.dart
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp()); // Entry point
}3. File pubspec.yaml - Dependencies
name: my_app
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: '>=3.0.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
http: ^1.1.0 # HTTP client
provider: ^6.0.0 # State management
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
flutter:
uses-material-design: true
assets:
- assets/images/Thêm package mới
# Thêm package
flutter pub add http
# Cập nhật dependencies
flutter pub get4. Thư mục Platform-specific
android/
android/
├── app/
│ ├── build.gradle # App config
│ └── src/main/
│ ├── AndroidManifest.xml
│ ├── kotlin/ # Native Kotlin code
│ └── res/ # Resources
└── build.gradle # Project configKhi nào sửa:
- Thêm permissions
- Cấu hình signing
- Native Android integrations
ios/
ios/
├── Runner/
│ ├── Info.plist # App config
│ ├── AppDelegate.swift # Native Swift code
│ └── Assets.xcassets/ # App icons
├── Podfile # CocoaPods
└── Runner.xcworkspace # Xcode projectKhi nào sửa:
- Thêm permissions
- Cấu hình App Store
- Native iOS integrations
5. Thư mục test/
test/
├── widget_test.dart # Widget tests
└── unit_test.dart # Unit testsChạy tests:
flutter test6. Thư mục assets/
Tạo thư mục assets/ cho hình ảnh, fonts, v.v:
my_app/
├── assets/
│ ├── images/
│ │ └── logo.png
│ └── fonts/
│ └── Roboto.ttfKhai báo trong pubspec.yaml:
flutter:
assets:
- assets/images/
fonts:
- family: Roboto
fonts:
- asset: assets/fonts/Roboto.ttfSử dụng trong code:
Image.asset('assets/images/logo.png')7. File quan trọng khác
| File | Mục đích |
|---|---|
pubspec.lock | Lock versions, commit vào git |
analysis_options.yaml | Cấu hình linter |
.gitignore | Files không commit |
.metadata | Flutter metadata |
8. Cấu trúc khuyến nghị cho dự án lớn
lib/
├── main.dart
├── app.dart # MaterialApp setup
├── core/
│ ├── constants/
│ ├── theme/
│ └── utils/
├── features/
│ ├── auth/
│ │ ├── screens/
│ │ ├── widgets/
│ │ └── providers/
│ └── home/
│ ├── screens/
│ ├── widgets/
│ └── providers/
├── models/
├── services/
└── shared/
└── widgets/📝 Tóm tắt
| Thư mục/File | Vai trò |
|---|---|
lib/ | Code Dart chính |
lib/main.dart | Entry point |
pubspec.yaml | Dependencies |
android/, ios/ | Native code |
test/ | Unit & widget tests |
assets/ | Hình ảnh, fonts |
Last updated on