π Overview
This Flutter app is designed for the Enterprise Software Development (ESD) workshop to introduce the basics of Flutter and Dart programming. The app, titled "My Favorite Things", allows users to create a list of their favorite items, view details, and add new items. It demonstrates fundamental Flutter concepts like navigation, state management, and UI design.
π οΈ Task
For the interactive part of the workshop you can clone this repo on Flutlab.io and try to understand or even extend the functionalities. This is your playground to be creative.
The app is designed for ease of understanding and feature richness, rather than strict adherence to best practices.
π‘ Ideas
Feel free to explore any additions or modifications you desire. If you're looking for inspiration, here are some suggestions:
- Shopping List Transformation: π Convert the app into a shopping list. Implement features like item deletion, marking items as purchased, and sorting by priority or categories.
- Personal Diary: π Turn it into a personal diary or journal app. Introduce features to add entries with dates, edit entries, and perhaps include mood icons or weather.
- Task Manager: π Morph it into a task management app. Add functionalities for setting deadlines, reminders, categorizing tasks, and marking them as complete.
- Photo Album: πΈ Convert the app into a photo album. Allow users to add photos, captions, and organize them into albums or by dates.
- Recipe Book: π³ Transform it into a recipe book where users can add, view, and categorize recipes. Include features for ingredients, cooking steps, and preparation time.
π Explanation
π Functionalities
- List Display: π The home screen shows a list of favorite items.
- Navigation: π¦ Users can navigate between the home screen, details screen, and add item screen.
- Add New Item: β Users can add new items to the list which will be displayed on the home screen.
- View Details: π Users can view more details about an item by tapping on it.
π File Structure
The project is organized into several directories for clarity and maintainability:
lib/ βββ main.dart # The entry point of the application. βββ models/ β βββ favorite_item.dart # Defines the FavoriteItem class. βββ screens/ β βββ home_screen.dart # Home page, displays the list of favorite items. β βββ details_screen.dart # Page showing detailed info about a selected item. β βββ add_item_screen.dart # Page for adding a new favorite item. βββ widgets/ βββ favorite_item_card.dart # Reusable widget for displaying an item in the list.
π§ Code Structure
βββ main.dart β βΆοΈ Sets up the MaterialApp β βΆοΈ Defines routes β βΆοΈ Applies the app theme β βββ models/ β βββ favorite_item.dart β βΆοΈ Contains the model for favorite items β βββ screens/ β βββ home_screen.dart β β βΆοΈ Displays a list of items using ListView.builder β β βΆοΈ Implements navigation to the details and add item screens β β β βββ details_screen.dart β β βΆοΈ Shows details of a selected item, passed through navigation β β β βββ add_item_screen.dart β βΆοΈ Contains a form to add new items and passes them back to the home screen β βββ widgets/ βββ favorite_item_card.dart βΆοΈ Custom widget to display each item in a card format