# Flutter Learning Challenge Set: Beginner to Senior

## Beginner Challenge: Task List App

Create a simple task list app that allows users to add, view, and delete tasks.

### Requirements:
1. Use a `StatefulWidget` for the main screen.
2. Implement a list to store tasks (use the `List` collection).
3. Create a text input field for adding new tasks.
4. Display tasks in a `ListView`.
5. Add a delete functionality for each task.
6. Use basic state management within the `StatefulWidget`.

### Concepts covered:
- Basic Flutter widgets
- StatefulWidget lifecycle
- Dart collections (List)
- Simple state management

## Junior Challenge: Weather Forecast App

Extend the task list app into a weather forecast app that fetches data from an API and uses more advanced Flutter concepts.

### Requirements:
1. Create a weather forecast screen that displays current weather and a 5-day forecast.
2. Implement navigation to switch between the task list and weather forecast screens.
3. Use `http` package to fetch weather data from a free API (e.g., OpenWeatherMap).
4. Implement error handling for API calls.
5. Use `Provider` for state management.
6. Create custom widgets for weather information display.
7. Add animations for loading states and transitions.

### Concepts covered:
- Flutter navigation
- Asynchronous programming (Futures)
- Error handling
- HTTP requests
- Provider for state management
- Custom widgets
- Basic animations

## Senior Challenge: Smart Home Control App

Develop a comprehensive smart home control app that incorporates advanced Flutter concepts and integrates features from the previous challenges.

### Requirements:
1. Create a dashboard that displays:
   - Task list widget (from beginner challenge)
   - Weather widget (from junior challenge)
   - Smart device control widgets (new feature)
2. Implement user authentication (you can mock this locally).
3. Use Firebase (or a mock service) for backend data storage and real-time updates.
4. Implement advanced navigation using Navigator 2.0.
5. Create custom animations for device control interactions.
6. Use `BLoC` pattern for state management.
7. Implement unit and widget tests for critical components.
8. Add theme switching capability (light/dark mode).
9. Optimize the app for different screen sizes (responsive design).
10. Implement local notifications for task reminders and device alerts.

### Concepts covered:
- Advanced state management (BLoC)
- Navigator 2.0
- Firebase integration (or mocking advanced backend services)
- Custom animations
- Unit and widget testing
- Theme management
- Responsive design
- Local notifications

## Building on Previous Challenges:
- The task list from the beginner challenge becomes a widget in the senior challenge's dashboard.
- The weather forecast from the junior challenge is also integrated into the senior challenge's dashboard.
- The navigation and state management evolve from basic concepts in the beginner challenge to more advanced implementations in the senior challenge.

## Future Assistance Prompt:
If you need help with these challenges in the future, use the following prompt:

"I'm working on the Flutter Learning Challenge Set that was generated in a previous conversation. I'm currently on the [Beginner/Junior/Senior] challenge, specifically struggling with [describe the specific part you're stuck on]. Can you provide guidance on how to approach this problem, keeping in mind the concepts that should be demonstrated at this level of the challenge?"

This prompt will help the AI assistant understand the context of your question and provide appropriate guidance based on the challenge level and specific concepts you should be working with.