Flutter Course: 11.1 Creating and Configuring Projects

Hello! In this tutorial, we will explore in detail how to create and structure a project using Flutter. Flutter is a powerful framework developed by Google that allows you to build mobile, web, and desktop applications using a single codebase. We will now look at the process of creating and configuring a Flutter project step by step.

1. Installing Flutter

To use Flutter, you must first install the Flutter SDK. Follow the steps below to proceed with the installation:

  • Download the Flutter SDK: Visit the official Flutter website to download the SDK suitable for your operating system.
  • Set environment variables: Add the path of the downloaded Flutter SDK to your system’s environment variables.
  • Install dependencies: Use the Flutter Doctor command to install necessary dependencies. Enter the following command in the command line:
flutter doctor

This command checks for any issues with your Flutter installation. If any required packages are missing, you will be prompted to install them.

2. Creating a New Flutter Project

Once the Flutter SDK installation is complete, let’s create a new project. To create a new Flutter application, enter the following command:

flutter create project_name

Here, project_name is the name of the project, which you can change to your preferred name. Once the project is created, the following directory structure will be generated:

project_name/
  ├── android/
  ├── ios/
  ├── lib/
  ├── test/
  ├── web/
  ├── pubspec.yaml

The roles of each directory are as follows:

  • android/: Contains configuration files and code for the Android platform.
  • ios/: Contains configuration files and code for the iOS platform.
  • lib/: The directory where the main code of the Flutter application (Dart files) is located.
  • test/: Contains unit tests and integration test code.
  • web/: Contains files for the web platform.
  • pubspec.yaml: A file that defines the project’s metadata, dependencies, and more.

3. Understanding the pubspec.yaml File

Let’s take a closer look at the key file of the Flutter project, pubspec.yaml. This file contains information about the project and defines dependency management and various settings.

name: project_name
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true

Key Component Descriptions:

  • name: The name of the project.
  • description: Description of the project.
  • publish_to: A setting indicating that this project will not be published to pub.dev.
  • version: The version of the project.
  • environment: The version range of the Dart SDK being used.
  • dependencies: The main packages utilized in the project.
  • dev_dependencies: Packages needed only during development.
  • flutter: Settings related to Flutter. For instance, if uses-material-design is true, it allows the use of Material Design icons.

4. Structuring the Project

Now let’s talk about how to structure the project. Generally, a Flutter application is organized in the following way:

  • lib/: Contains the main application code.
  • screens/: Contains files that define the application’s screens.
  • widgets/: Contains reusable widgets.
  • models/: Contains data model classes.
  • services/: Contains service classes such as networking.

Maintaining this structure ensures that the code is organized and easy to manage. For example, consider a project with the following file structure:

lib/
  ├── main.dart
  ├── screens/
  │   ├── home_screen.dart
  │   └── settings_screen.dart
  ├── widgets/
  │   ├── custom_button.dart
  │   └── header.dart
  ├── models/
  │   ├── user.dart
  │   └── product.dart
  └── services/
      ├── api_service.dart
      └── auth_service.dart

5. Creating a Basic Hello World Application

Now let’s create a basic Hello World application. Open the lib/main.dart file and write the following:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello World App'),
        ),
        body: Center(
          child: Text('Hello, Flutter!'),
        ),
      ),
    );
  }
}

This code creates a simple application based on Flutter. The runApp function launches the MyApp widget to start the application. The Scaffold provides the basic UI framework. The AppBar and Center widgets are used to position the text in the center.

6. Running the Application

Now that the project is ready, let’s run it. Enter the following command in the command line:

flutter run

Executing the above command will launch the application on the connected device or emulator. When the app is run, the phrase “Hello, Flutter!” will be displayed in the center.

7. Debugging and Building

Identifying and fixing errors or bugs during application development is an important process. Flutter provides powerful debugging tools.

  • Hot Reload: A feature that allows you to apply changes immediately without refreshing the app after code changes.
  • Debug Mode: Use the debugging tools provided by Flutter to easily check variable values, stack traces, breakpoints, and more.

You can build the project using the following command:

flutter build apk

This command generates an APK file that can be run on Android. For iOS, use the appropriate command to perform the build in Xcode.

8. Conclusion

In this tutorial, we learned how to create and structure a Flutter project. Flutter is a powerful tool for quickly prototyping applications. By understanding and adjusting the project structure, you can efficiently proceed with application development. In the next tutorial, we will explore how to create richer UIs using various Flutter widgets.

References