-
Clone the repository:
git clone https://github.com/ales-dev-studio/flutter-portfolio-app.git
-
Change to the project directory:
cd portfolio_app -
Install the dependencies:
flutter pub get
-
Run the app:
flutter run
The app follows the Clean Architecture principles, with the following structure:
lib/core/: Contains Core Utilities that used entire applicationfeatures/:app: Initializes the app and sets up the dependency injection.{features_a}:data/: Contains the data layer responsible for handling data fetching and caching.domain/: Defines the core business logic and entities of the app.presentation/: Contains the UI layer of the app, including BLOCs, views, and widgets.
main.dart: Entry point of the application.
The app utilizes several Flutter packages:
- bloc: Abstracts business logic from presentation and handles state management.
- flutter_bloc: Implements the BLOC pattern for state management.
- get_it: Provides dependency injection capabilities.
- dio: Handles HTTP requests to fetch news articles.
- cached_network_image: Caches images fetched from the network.
- equatable: Simplifies equality comparisons for state management.
- get_it: Provides dependency injection capabilities.
- mockito: Used for mocking dependencies in unit tests.
- flutter_test: Used for writing unit and widget tests.
- shared_preferences: Handles caching fetched data from the network.
- slang: Handles localization and multilingual support.
- intl: Provides internationalization and localization facilities, including message translation, plurals/genders in messages, and date/number formatting based on the current Locale.
BrickHub is a platform where developers can discover, install, and publish reusable templates called bricks.
See for more information: online documentation
To auto create clean architecture directories use mason:
mason make clean_architecture_folders --name home -o ~/AndroidStudioProjects/personal_portfolio/lib/features
online documentation A brick to create a feature and tests using best practices and your state management of choice:
mason make feature_brick
===============================
The multilingual structure of the app is implemented by slang package.
See for more information: online documentation
To use command-line tool run this command:
dart run slang
===============================
flutter_launcher_icons package is a command-line tool which simplifies updating launcher icons.
See for more information: online documentation
To use command-line tool run these commands:
flutter pub get flutter pub run flutter_launcher_icons -f flutter_launcher_icons.yaml
===============================
Formz package is a unified form representation in Dart. Formz aims to simplify form representation and validation in a generic way.
See for more information: online documentation online documentation
To use command-line tool run this command:
mason make formz_input -o ~/AndroidStudioProjects/personal_portfolio/lib/features --input_name PhoneNumber --input_type String --initial_value "''" --validate_empty_string true
