Machine Test for Senior Flutter Developer (5+ Years Experience)
Test Instructions:
- Duration: 2.5 Hours
- Required: Laptop with Flutter installed, internet access for API testing (optional local JSON file
provided if offline).
- Objectives: Develop a fully functional Flutter application that demonstrates Bloc state
management, API integration, local storage, and UI responsiveness.
Task Description:
Create a Flutter application with the following functionalities:
Project Requirements
Authentication Module:
- Implement a login screen using Bloc to handle the login state.
- Use a mock API endpoint (or provided JSON data file) to verify login credentials.
- Display appropriate error messages for failed login attempts.
- Bonus: Include a 'Remember Me' option using local storage (e.g., SharedPreferences).
Product Listing Module:
- After login, navigate to a product listing screen.
- Fetch product data from a provided API endpoint and display it in a ListView with pagination.
- Implement a loading spinner during data fetch, and a 'Load More' button to simulate pagination.
- Use Bloc to manage the product list state, with states for loading, success, and error.
Product Details Module:
- On clicking a product, navigate to a detail page that shows full product information.
- Use a new Bloc instance to manage the state of this detail page.
- Include a 'Favorite' button that updates a local database (SQLite or Hive) to save or remove the
product as a favorite.
- Bonus: Show a toast notification when a product is added to or removed from favorites.
Favorite Products Module:
- Provide a separate screen to display favorite products saved in local storage.
- Use Bloc to manage the state for displaying and updating favorites.
- Allow users to remove products from their favorites on this screen, with real-time updates.
Evaluation Criteria
1. Bloc State Management (40%)
- Use Bloc to manage different states across screens (loading, success, failure).
- Properly separate business logic from UI.
- Effective use of multiple Bloc instances and event handling.
2. API Integration (20%)
- Correct use of HTTP requests for API calls.
- Proper handling of API responses and error cases.
- Smooth user experience during loading states and pagination.
3. Local Data Persistence (20%)
- Use local storage for saving login credentials (if 'Remember Me' is implemented) and favorites.
- Efficiently manage and update the list of favorite products.
4. UI and UX (20%)
- Clean, responsive UI design.
- Consistent theme and intuitive navigation.
- User-friendly error handling (e.g., error messages on failed API calls).
Submission Guidelines
- Ensure the app runs without issues.
- Provide code comments explaining key logic, especially Bloc state transitions.
- Submit the project in a zip file or as a GitHub repository link.
- Include a README file with setup instructions, any third-party packages used, and explanations of
any bonus features added.