Skip to main content

Assignment 8: Flutter Navigation, Layouts, Forms, and Input Elements

Platform-Based Programming (CSGE602022) — Organized by the Faculty of Computer Science Universitas Indonesia, Odd Semester 2023/2024


Assignment Description

In this assignment, you will implement navigation, layouts, forms, and form input elements in the Flutter application you created in the previous assignment.

Checklist for this assignment is as follows:

  • Create at least one new page in the application, a page for adding a new item with the following requirements:
    • Use at least three input elements: name, amount, description. Add input elements according to the model in your Django assignment.
    • Have a Save button.
    • Validate each input element in the form with the following requirements:
      • Each input element must not be empty.
      • Each input element must contain data of the same data type as its model attribute.
    • Direct users to the new item addition form page when clicking the Add Item button on the main page.
    • Display data as entered in the form in a pop-up after clicking the Save button on the new item addition page.
    • Create a drawer in the application with the following requirements:
      • The drawer must have at least two options: Home and Add Item.
      • When choosing the Home option, the application will direct the user to the main page.
      • When choosing the Add Item option, the application will direct the user to the new item addition form page.
    • Answer the following questions in the README.md in the root folder (please modify the README.md you previously created; add subheadings for each assignment):
      • Explain the difference between Navigator.push() and Navigator.pushReplacement(), accompanied by examples of the correct usage of both methods!
      • Explain each layout widget in Flutter and their respective usage contexts!
      • List the form input elements you used in this assignment and explain why you used these input elements!
      • How is clean architecture implemented in a Flutter application?
      • Explain how you implemented the checklist above step-by-step! (not just following the tutorial)
    • Perform add-commit-push to GitHub.

Deadline

The deadline for Assignment 8 is Wednesday, 15th November 2023, at 12:00 p.m.

The teaching assistants will check the last commit of the lab assignment repository, so you do not need to submit the repository link separately.

Bonus

You will gain bonus points for this assignment if you implement the following feature.

  • Create a new page, a product list page, with the contents being every product data that has been created.

    You can use the model objects to implement this feature.

  • Direct users to this page when they click the View Products button on the main page or in the drawer.