Piiicks is a Flutter e-commerce app, meticulously crafted with clean architecture and powered by the efficient BLoC state management ensuring scalability, maintainability, and optimal performance. Dive into a seamless coding experience with a sleek interface and robust features designed to elevate the online shopping journey.
- lib
- main.dart: Entry point of the application.
- 📂application ──📂blocs/cubits: Houses the BLoC (Business Logic Component) or Cubit classes responsible for managing the application's state.
- đź“‚core: Contains core functionalities and utilities shared across the application.
- đź“‚configs: Holds configuration files for the project.
- đź“‚di: Dependency Injection setup for managing dependencies and services.
- đź“‚data: Manages data sources, repositories, and data models.
- đź“‚domain: Defines the domain entities, use cases, and interfaces.
- 📂presentation ──📂screens/widgets: Contains UI components, screens, and widgets for the application.
- Clean Architecture: Ensure a modular and scalable architecture for long-term maintainability.
- BLoC State Management: Efficient state management for a smooth and predictable user experience.
- Product Screen: User-friendly display of products for effortless browsing.
- Categories: Seamless navigation through various product categories.
- Product Details: In-depth information for a comprehensive view of products.
- Search Functionality: Robust search feature for quick product discovery.
- Search Results: Clear and relevant search results for user convenience.
- Home Screen: Engaging showcase of featured products and categories.
- Filter Options: Intuitive product filtering options for a customized shopping experience.
- Splash Screen: Captivating initial loading screen setting the tone for the app.
- Addresses: Effortlessly manage and edit user addresses for smooth order processing.
- Pagination: Implement pagination for efficient loading of large sets of data, ensuring a smoother user experience.
- Sort Products: Options to sort products based on criteria such as price.
- Notifications: Keep users informed with updates on order status and more.
- Login/SignUp: Secure user authentication for a personalized experience.
- Shopping Cart: Seamless and intuitive management of selected items before purchase.
- User Profile: Dedicated section for managing addresses, viewing order history, and personalizing preferences.
- Orders Management: Enable the user to make orders and show different order result screen based on the order status.
- Image Caching and Loading Optimization: Utilize the
cached_network_image
package for efficient loading and caching of network images, enhancing performance. - SVG Support: Leverage the
flutter_svg
package for supporting SVG images, providing a scalable and crisp user interface. - Data Caching: Use the
shared_preferences
package for caching small amounts of data, improving the user experience by maintaining certain states. - Authentication and Secure Storage: Implement secure user authentication with the
flutter_secure_storage
package, ensuring sensitive user data is stored securely. - Stateful UI with Shimmer Effect: Enhance the user interface by incorporating the shimmering effect using the
shimmer
package, providing a polished loading experience. - Dynamic Page Indicators: Implement dynamic page indicators using the
dots_indicator
package, providing visual cues for users when navigating through different screens. - HTTP Requests and API Integration: Leverage the
http
package for making HTTP requests and seamlessly integrate with external APIs for fetching and updating data. - Network Connectivity Check: Utilize the
internet_connection_checker
package to ensure a smooth user experience by checking and handling network connectivity. - Dependency Injection: Leverage the
get_it
package for efficient dependency injection, improving code maintainability and managing dependencies effectively. - Functional Programming Principles: Explore and implement functional programming principles from the
dartz
package, enhancing code clarity and error handling. - Share Products: Enable users to share product details using the
share_plus
package for seamless sharing on social media and other platforms. - Contact Us Screen with URL Launcher: Utilize the
url_launcher
package to open the contact us screen, allowing users to interact with external links such as emails or phone numbers. - Wishlist with Get Storage: Implement a wishlist feature using the
get_storage
package to save and retrieve products, providing users with a personalized wishlist experience. - Product Sharing with Screenshot: Allow users to share product details with a screenshot using the
screenshot
package, enhancing the sharing capabilities of your app.
environment:
sdk: '>=3.0.5 <4.0.0'
dependencies:
flutter:
sdk: flutter
# the last versions.
equatable:
# Package for handling value equality without explicit overrides
dartz:
# Functional programming library for Dart
shared_preferences:
# Plugin for reading and writing key-value pairs to persistent storage
http:
# Package for making HTTP requests
internet_connection_checker:
# Library for checking internet connectivity
flutter_bloc:
# State management library for Flutter applications
get_it:
# Simple service locator for Dart and Flutter projects
shimmer:
# Package for adding shimmering effect to Flutter applications
cached_network_image:
# Library for loading and caching network images
flutter_svg:
# Library for rendering SVG files in Flutter applications
dots_indicator:
# Customizable dots indicator for PageView in Flutter
flutter_secure_storage:
# Secure storage plugin for Flutter
photo_view:
# Package for displaying images in Flutter with zooming and panning capabilities
dotted_border:
# Package for creating dotted borders in Flutter
flutter_local_notifications:
# Package for displaying local notifications in Flutter applications
share_plus:
# Package for sharing content on social media and more
get_storage:
# Persistent storage for Flutter, allowing key-value pair storage
screenshot:
# Flutter plugin for taking screenshots of widgets
path_provider:
# Plugin for interacting with the file system, including getting the app's temporary and application support directories
url_launcher:
# Flutter plugin for launching URLs, emails, making phone calls, and sending SMS.
flutter_phoenix:
# Easily restart your application from scratch, losing any previous state.
- Products.
- Categories.
- Product Details.
- Search.
- Search Result.
- Home.
- Filter.
- Login.
- SignUp.
- Splash.
- Cart.
- Profile.
- Adresses.
- Add/Edit Adress.
- Sort Products.
- Terms & Conditions.
- Wishlist.
- Contact Us.
- Checkout.
- Order Success.
- Order Failure.
- Orders.
- Notifications.
For more screen shots Here
- Payment.
login.mp4
orders-cart.mp4
categories-notifications-profile-filter.mp4
search.mp4
- Usually this Case will Occur if you open the app for the first time without internet connection. If its not the first time the app will use cached data.
error-phoenix-refresh.mp4
- Clone the repository.
- Navigate to the project directory.
- Run
flutter pub get
to fetch the dependencies. - Open the project in your preferred Flutter IDE.
- Run the app on your desired emulator or physical device.