On this page
Flutter: Unleash the Power of Seamless UI Across Platforms

On this page
Flutter Project Folder Structure
When you create a new Flutter project, it comes with a well-organized folder structure. Understanding this structure is key to managing your codebase efficiently and scaling your project as it grows. Here’s a breakdown of the main directories and files you’ll encounter:
android/
This folder contains the Android-specific code and configuration needed to run your Flutter app on Android devices.
- app/ – Main Android application code, including manifest and Java/Kotlin files.
- gradle/ – Gradle build configuration scripts.
- gradle.properties – Defines Gradle settings and properties.
- gradlew / gradlew.bat – Gradle wrapper scripts for Unix and Windows.
- settings.gradle – Specifies Gradle settings for the project.
build/
Generated automatically during the build process. It contains compiled files and can be excluded from version control.
ios/
Contains the iOS-specific code and settings required to run your app on Apple devices.
- Runner/ – Xcode project folder with configurations and source files.
- Podfile – Used to manage iOS dependencies via CocoaPods.
lib/
The main directory for writing your Dart code. This is where your application logic and UI are built.
- main.dart – The main entry point of your Flutter application.
- You can create additional folders (e.g.,
screens/
,widgets/
,services/
) for better organization.
test/
Used for writing unit tests, widget tests, and integration tests to ensure your app works as expected.
web/
Only present if your project targets the web platform. It contains HTML and JS files specific to the web version of your app.
assets/
A folder for storing static assets like images, fonts, and JSON files.
- Common subfolders:
images/
,fonts/
,icons/
pubspec.yaml
The configuration file where you define dependencies, assets, fonts, and metadata about your Flutter project.
README.md
A Markdown file used for writing documentation or instructions related to your project.
LICENSE
If you’re using an open-source license, you can include it here.
.gitignore
Specifies which files and directories Git should ignore (e.g., build/
, temporary files).
.analysis_options
Configuration for customizing the Dart analyzer, including linting rules.
pubspec.lock
Generated automatically to lock versions of dependencies used in your project.
.metadata
Stores project-specific metadata used by Flutter tools.
.packages
Used internally by Dart to locate packages. Replaced in newer versions by .dart_tool/
.
.flutter_settings
Contains IDE-specific settings related to Flutter.
Here’s a visual representation of the typical Flutter folder structure:
Common Flutter Commands
flutter
flutter doctor
flutter doctor --android-licenses
Create a New Flutter Project
Run the following command in your terminal to create a new Flutter project:
flutter create budget_buddy
That’s it! With this folder structure and the right tools, you’re all set to start building your next Flutter app with clarity and efficiency.

