Font size
  • A-
  • A
  • A+
Site color
  • R
  • A
  • A
  • A
Skip to main content
Skill-Wanderer Dojo
  • Home
  • More
You are currently using guest access
Log in & Register
Skill-Wanderer Dojo
Home
Expand all Collapse all

Flutter Multi-Screen Survey Collection App (Firebase Storage)

  1. Programming
  2. Programming Fundemental
  3. Flutter Mobile Development
  4. Assignment: Survey Collection App (Flutter + Firebase)
  5. Flutter Multi-Screen Survey Collection App (Firebase Storage)
Completion requirements
Opened: Saturday, 22 November 2025, 12:00 AM

Overview

In this assignment, you will build a multi-screen Flutter application that allows users to complete and submit survey forms.
All survey responses must be stored in Firebase Cloud Firestore.

This task is designed to move you beyond a single-widget Todo app into a more realistic application with navigation, multiple UI components, data storage, and form handling.


Learning Outcomes

By completing this assignment, you will be able to:

  • Implement multiple screens in Flutter using navigation

  • Build reusable UI widgets instead of a single large widget

  • Integrate Firebase Cloud Firestore for data storage

  • Handle form validation and submission flows

  • Apply basic state management for form and loading states

  • Structure a Flutter project using clean separation of concerns


Task Description

You must develop a Flutter app that allows a user to:

  1. View a list of available surveys

  2. Select a survey and view its details

  3. Complete a multi-question survey form

  4. Submit the survey and store responses in Firebase

  5. View a confirmation screen after submission

No authentication is required unless you choose the optional extension.


Functional Requirements

✅ 1. Home Screen

  • Display a list of surveys from Firestore

  • Each item shows:

    • Survey title

    • Short description

  • Tapping a survey navigates to its detail screen

✅ 2. Survey Detail / Start Screen

  • Show survey title and description

  • “Start Survey” button to begin

✅ 3. Survey Form Screen

Must include at least 4 question types, such as:

  • Short text input

  • Long text input

  • Single-choice (radio)

  • Multi-choice (checkbox)

  • Dropdown

  • Rating (e.g., 1–5)

Requirements:

  • Each question must be its own widget

  • Validation for required fields

  • Submit button:

    • Disabled until form is valid

    • Shows loading state

    • Saves response to Firestore

✅ 4. Thank You Screen

  • Confirmation message

  • Button to return to Home


Firebase Requirements

Use Cloud Firestore with the following structure:

 
surveys/ {surveyId} title: string description: string surveys/{surveyId}/responses/ {responseId} createdAt: timestamp answers: map

Additional requirements:

  • Store one document per submission

  • Enable Firestore offline persistence

  • No direct Firestore calls inside UI widgets (use a repository/service)


Technical Requirements

✅ Minimum

  • At least 3 separate screens

  • Reusable widgets (not one single file)

  • State management using:

    • Provider / ChangeNotifier OR

    • Riverpod OR

    • Cubit

  • Form validation

  • Loading and error handling states

  • Clean project structure (e.g., screens/, widgets/, data/)

✅ Navigation

Use Navigator.push / pop or routing package.


Deliverables

Submit the following:

  1. Git repository link (GitHub/GitLab/Bitbucket)

  2. Source code must include:

    • lib/ folder

    • pubspec.yaml

  3. A short README.md containing:

    • App description

    • Setup instructions

    • Firebase setup notes

    • List of completed features


Assessment Criteria (Rubric)

Criteria Marks
Multiple screens implemented correctly 20
Firebase integration works and stores responses 25
Reusable widgets and clean UI structure 20
Form validation and submission flow 15
State management used appropriately 10
Loading/error/empty states handled 10
Total 100

Previous activity Build a Basic Flutter To-Do List Mobile App
Next activity Flutter Mini Shopping App (Fake Store API)

Contact us

Follow us

You are currently using guest access (Log in & Register)
Powered by Moodle

This theme was proudly developed by

Conecti.me