This document outlines the specifications and requirements for the Flutter application task during the internship process. The project involves creating a functional app with registration, login, and movie list features, using the Parse Platform API for backend and local database integration.
The application consists of two main screens:
-
Login Screen:
- Includes input fields for username and password.
- Buttons to either register a new user or log in with existing credentials.
-
Dashboard Screen:
- Displays a scrollable list of movies retrieved from a remote database.
- Shows details for each movie, such as the title, description, and additional movie information.
- Allow user registration with a unique username and password.
- Enable users to log in using their registered credentials.
- Use the Parse Platform API for backend services.
- Store and retrieve movie list data locally using a caching mechanism.
- Frontend: Flutter for cross-platform development.
- Backend: Parse Platform API for data fetching and local storage management.
- Design the UI as per the provided wireframes.
- Ensure the app is responsive across various screen sizes.
- Write clean and modular code.
- Add comments to explain the purpose of functions and components.
- Movies List:
- Fetch and display movies with pagination.
- Details Navigation:
- View detailed information about a movie.
- Pagination:
- Navigate through pages of movies using arrow buttons.
- Upon successful login, the app navigates to
MainViewusing a custom router.
- Use
initHomeModule()to set up necessary dependencies, such asHomeUseCaseandMainViewModel.
- Use
ChangeNotifierProviderto manage state updates and notify UI components reactively.
- Start Method:
- Initiates data loading in
MainViewModel.
- Initiates data loading in
- Repository Pattern:
- Fetch data from the local database first. If unavailable, retrieve it from the remote API via
AppServiceClient.
- Fetch data from the local database first. If unavailable, retrieve it from the remote API via
- Handle API response errors gracefully using the
Eithertype.
| Package | Version | Purpose |
|---|---|---|
| Lottie | 3.1.3 | Provides animated illustrations. |
| Freezed Annotation | 2.4.4 | Helps create immutable data models. |
| Dartz | 0.10.1 | Functional programming utilities for safe data handling. |
| Json Annotation | 4.9.0 | Facilitates JSON serialization. |
| Internet Connection Checker | 1.0.0+1 | Checks for active internet connections. |
| Dio | 5.7.0 | Handles HTTP requests. |
| Pretty Dio Logger | 1.4.0 | Logs API requests for debugging. |
| Get It | 8.0.2 | Service locator for dependency injection. |
| Flutter Phoenix | 1.1.1 | Allows app restarts for session management. |
| Provider | 6.1.2 | Simplifies state management. |
| Shared Preferences | 2.3.3 | Stores simple key-value pairs locally. |
| Easy Localization | 3.0.7 | Adds localization and internationalization. |
| Tool | Version |
|---|---|
| Flutter | 3.24.3 (stable) |
| Dart SDK | 3.3.4 (stable) |
| Android SDK | 34.0.0 |
| Android Studio | 2024.2 |
| VS Code | 1.95.2 |
| OpenJDK | 17.0.8.1 |
| Gradle | 8.4 |
| OS | Windows 10 |
- Parse Platform API for Flutter Documentation
- Official Flutter Documentation: flutter.dev
This document ensures clarity in the implementation and provides a structured approach to completing the task efficiently.