โšกFREE Live Master Session: Scratch Game Development for Kids

    Register for Free โ†’
    Back to Programs
    ๐Ÿ“ฒCourse Curriculum

    Mobile Apps with Flutter

    App Developmentยท Intermediateยท Ages 15โ€“17ยท 20 Hours

    Course At a Glance

    Category

    App Development

    Level

    Intermediate

    Age Group

    15โ€“17 years

    Prerequisite

    Basic Programming

    Duration

    20 Hours

    Modules

    4 Modules

    Program Outcomes

    By the end of this course, students will be able to:

    • 1

      Understand the basics of developing applications with Flutter and the Dart programming language.

    • 2

      Modify and customise components and layouts to create polished, multi-screen app interfaces.

    • 3

      Build simple Flutter apps that can be compiled and run across mobile, web, and desktop platforms.

    Module 1

    Introduction to Flutter & Dart

    Students are introduced to Flutter as a cross-platform development framework and learn Dart. Topics cover environment setup, Dart syntax, OOP, and the first Flutter widgets.

    Approx. 5 hrs
    #Lesson TitleWhat Students LearnActivity / ProjectKey Widgets / Concepts
    1.1What is Flutter & Why Use It?Understand Flutter's cross-platform architecture (compile to mobile/web/desktop) and widget-based UI model. Compare to React Native.Exploration: Browse the Flutter showcase. Identify 3 real-world Flutter apps and list their UI features.Flutter, Dart, widget tree, cross-platform, SDK
    1.2Environment Setup & First RunInstall Flutter SDK, configure VS Code, and use flutter doctor. Run the default counter app on an emulator.Setup Lab: Run flutter doctor. Create 'hello_flutter' project. Run on emulator and explore the lib/main.dart file.flutter create, flutter run, pubspec.yaml, lib/main.dart
    1.3Dart Fundamentals: Variables & TypesLearn Dart's statically typed syntax: var, final, const, basic data types (List, Map), string interpolation, and null safety.Dart Exercises: Write 10 snippets in DartPad (dartpad.dev) using typed variables and string interpolation.var, final, const, int, String, List<T>, Map<K,V>, $var, ?type
    1.4Dart Fundamentals: Functions & Control FlowWrite typed functions, arrow functions (=>), if/else logic, loops, and switch statements. Compare to Python.Build in DartPad: Write gradeCalculator() function and loop over a List of names printing a greeting.void func(Type param), =>, if/else, for (var x in list), switch
    1.5Dart Classes & Object-Oriented ProgrammingDefine classes with properties, methods, and named constructors. Learn shorthand constructor syntax and inheritance.Build: Define a Student class in DartPad. Create objects and call methods. Create a subclass using extends.class, constructor, this., get, extends, @override
    1.6Your First Flutter WidgetUnderstand the widget tree. Distinguish StatelessWidget from StatefulWidget. Explore MaterialApp and Scaffold.Build: Replace the default app with a 'Welcome Screen' (Scaffold, AppBar, Column, Text) from scratch.StatelessWidget, build(), MaterialApp, Scaffold, AppBar, Column, Text
    1.7Core Widgets: Text, Image & IconStyle Text with TextStyle. Add images (asset/network) and Icons. Declare local assets in pubspec.yaml.Build: 'Profile Card Screen' โ€” Avatar image, bold styled name, grey subtitle, and an icon row.TextStyle, Image.asset, Image.network, Icon, SizedBox, pubspec.yaml assets:
    1.8Module 1 Review & Mini AppConsolidate Dart OOP, stateless widgets, and hot reload workflow by building a polished single-screen app.Mini App: 'Personal Bio Card' โ€” a polished Card widget displaying student data passed from a Dart class.Full Module 1 โ€” Dart + Flutter core widgets, Card, hot reload
    Module 2

    Layouts, Components & Navigation

    Students build multi-screen apps by mastering layout widgets, Container styling, scrollable lists, user input components, app-wide theming, and screen-to-screen navigation.

    Approx. 5 hrs
    #Lesson TitleWhat Students LearnActivity / ProjectKey Widgets / Concepts
    2.1Layout Widgets: Column, Row & StackMaster Column (vertical), Row (horizontal), and Stack (layered) widgets. Control alignment with axis alignment properties.Layout Workshop: Build 3 separate screens demonstrating Column, Row spacing, and Stack text overlays.Column, Row, Stack, Positioned, Expanded, mainAxisAlignment, crossAxisAlignment
    2.2Container, Padding & DecorationUse Container for precise sizing and styling via BoxDecoration (gradients, borders, shadows). Apply Padding.Build: 'Styled Card Gallery' โ€” 3 cards styled with gradients, rounded corners, and box shadows.Container, BoxDecoration, BorderRadius, margin, padding, gradient
    2.3ListView & GridViewDisplay scrollable lists with ListView.builder and GridView.count. Use ListTiles for standard list rows.Build: 'App Menu Screen' โ€” a GridView of icon tiles, replaced by a ListView.builder of 20 items.ListView.builder, GridView.count, itemBuilder, itemCount, ListTile
    2.4Buttons & User Input WidgetsUse ElevatedButton, TextButton, and FloatingActionButton. Accept input using TextField and TextEditingController.Build: 'Interactive Form Screen' โ€” capture name/email with TextFields and a styled submit button.ElevatedButton, TextButton, FloatingActionButton, TextField, TextEditingController, InputDecoration
    2.5Themes & Custom StylingDefine app-wide themes with ThemeData (primary colour, text styles). Switch between light and dark themes.Theming Sprint: Apply a custom ThemeData to the Bio Card app. Add a light/dark theme toggle.ThemeData, primarySwatch, textTheme, ColorScheme, Theme.of(context)
    2.6Navigation & Multiple ScreensNavigate using Navigator.push() and .pop(). Pass data between screens. Understand named routes.Build: 'Two-Screen App' โ€” a Home list where tapping an item passes its data to a Detail screen.Navigator.push(), MaterialPageRoute, Navigator.pop(), context, named routes
    2.7Responsive Layouts & MediaQueryAdapt layouts using MediaQuery and LayoutBuilder. Handle constraints for phone vs. tablet/web displays.Responsive Challenge: Build a layout that shows a GridView on web/tablet and a ListView on phones.MediaQuery.of(context).size, LayoutBuilder, constraints.maxWidth, Flexible
    2.8Module 2 Project: UI AppCombine layout and navigation skills to build a polished, themed, multi-screen app without logic.Project: 'Recipe Book App' โ€” Home GridView routing to Recipe Detail screens. Fully themed and styled.Full Module 2 โ€” layouts, navigation, theme
    Module 3

    Interactivity, State & Data

    Students bring apps to life with StatefulWidget, handle gestures, build validated forms, manage dynamic lists, write async code, fetch API data, and persist data with SharedPreferences.

    Approx. 5 hrs
    #Lesson TitleWhat Students LearnActivity / ProjectKey Widgets / Concepts
    3.1StatefulWidget & setState()Understand reactive UI. Convert stateless widgets to stateful. Trigger UI rebuilds using setState().Build: 'Like Button' โ€” a heart icon that toggles filled/outlined and increments a counter variable on tap.StatefulWidget, State<T>, setState(), createState(), _variableName
    3.2User Interaction & Gesture DetectionHandle taps, long presses, and swipes using GestureDetector. Apply InkWell for Material ripple effects.Build: 'Gesture Playground' โ€” log swipe directions, scale on long-press, and show snackbars on double-tap.GestureDetector, onTap, onLongPress, onDoubleTap, InkWell, ScaffoldMessenger.showSnackBar()
    3.3Forms & Input ValidationBuild validated forms using Form, GlobalKey<FormState>, and TextFormField validator functions.Build: 'Sign-Up Form' โ€” validate email and password lengths, displaying a success SnackBar or red errors.Form, GlobalKey<FormState>, TextFormField, validator, .validate(), .save()
    3.4Lists with State: Add & Delete ItemsManage dynamic List data in a StatefulWidget. Add/remove items and trigger ListView rebuilds. Use Dismissible.Build: 'Dynamic To-Do List' โ€” append tasks to a list and swipe to delete them using Dismissible.List.add(), List.removeAt(), ListView.builder, Dismissible, key: ValueKey()
    3.5Async Dart & FuturesWrite non-blocking code with async/await and Futures. Use try-catch for errors and show loading spinners.Exercises: Write a Future function that waits 2s, returns data, and displays a CircularProgressIndicator.Future<T>, async, await, try-catch, CircularProgressIndicator, FutureBuilder
    3.6Fetching Data from the InternetUse the http package to GET JSON data from a REST API. Parse it with jsonDecode and map to Dart classes.Build: 'Joke Fetcher App' โ€” fetch random jokes from a public API and display them with FutureBuilder.http package, http.get(), jsonDecode(), fromJson(), FutureBuilder, snapshot
    3.7Local Data Persistence with SharedPreferencesSave/retrieve simple key-value data (strings, bools) across app sessions using shared_preferences and initState().Build: 'Remember Me App' โ€” save a user name and auto-load it on next launch using SharedPreferences.SharedPreferences.getInstance(), .setString(), .getString(), initState()
    3.8Module 3 Project: Interactive AppApply forms, gestures, lists, async API fetching, and local persistence into a cohesive interactive app.Project: 'Trivia Quiz App' (API fetching + tracking score) OR 'Personal Task Manager' (dynamic lists + persistence).Full Module 3 โ€” StatefulWidget, http, SharedPreferences
    Module 4

    Final App Project

    Students design, plan, build, and present a complete original Flutter app running on mobile and web, integrating state, data, and clean multi-platform routing.

    Approx. 5 hrs
    #Lesson TitleWhat Students LearnActivity / ProjectKey Widgets / Concepts
    4.1Final Project Briefing & IdeationDesign a complete cross-platform app demonstrating multi-screen UI, stateful interaction, and data integration.Ideation Session: Pitch 3 app ideas. Fill out a Project Idea Form scoping features, platforms, and data sources.App concept, multi-platform planning, feature scoping
    4.2UI Design & Widget PlanningSketch wireframes, map navigation flows, and construct a widget tree diagram for complex screens.Design Deliverable: Submit wireframes labelled with Flutter widgets and a complete navigation flow map.Wireframe, widget tree diagram, navigation map, ThemeData plan
    4.3Project Setup & UI SkeletonConfigure pubspec.yaml. Set up routing with named routes. Build placeholder screens and apply ThemeData.Build Sprint: Create all screens, define routes, and test navigation on emulator and Chrome web.named routes, initialRoute:, routes: {}, ThemeData, pubspec.yaml
    4.4Core Features Build โ€” Part 1Implement the primary screen functionality. Convert placeholders to StatefulWidgets and connect UI to setState().Build Sprint: Core interactive feature working end-to-end. UI updates correctly based on user input.StatefulWidget, setState(), TextEditingController, Navigator
    4.5Core Features Build โ€” Part 2Complete remaining screens. Integrate API fetching or SharedPreferences persistence. Handle empty/loading states.Build Sprint: API or local data integration complete. Data loads on startup and saves appropriately.http.get(), FutureBuilder, SharedPreferences, initState(), snapshot.hasData
    4.6Multi-Platform Testing & ResponsivenessRun the app simultaneously on Android and Chrome web. Use LayoutBuilder to fix platform-specific overflow errors.Platform Testing: Verify the app adapts from a 1-column layout on mobile to a multi-column layout on web.flutter run -d chrome, flutter run -d all, LayoutBuilder, MediaQuery
    4.7Polish, Error Handling & Code QualityAdd SnackBars, loading indicators, and error catching. Refactor repeated widgets. Run flutter analyze.Polish Sprint: Add UX confirmations. Extract โ‰ฅ1 custom widget. Fix all warnings and peer-test.SnackBar, CircularProgressIndicator, custom widget extraction, flutter analyze
    4.8Final Presentation DayPresent the completed cross-platform app, discussing code structure, challenges, and multi-platform quirks.Final Demo: 4-minute live walkthrough on mobile + web + Q&A. Certificates awarded.Full course โ€” Flutter & Dart

    Teaching Notes & Tips

    Pacing Guidance

    Each module contains 8 lessons (~35โ€“45 mins), totalling ~20 hours. Environment setup (1.2) may take a full session. API fetching (3.6) is challenging and benefits from live coding.

    Differentiation

    Advanced students can explore Provider/Riverpod for state management, Firebase Auth/Firestore, or deploying web apps to GitHub Pages. Core students should focus on basic SharedPreferences over API calls.

    Assessment Criteria

    Capstone assessed on: (1) UI Quality (clean widgets). (2) Navigation (named routes). (3) State Management (correct setState usage). (4) Data Integration. (5) Multi-Platform (runs on mobile & web).

    Tools & Environment

    Required: Flutter SDK, VS Code with Flutter/Dart extensions, Android Studio (emulator), Chrome. DartPad used for initial Dart syntax. Pre-imaging school lab machines is highly recommended.

    Final Project App Ideas

    Trivia Quiz (Open Trivia API + SharedPreferences), Weather App (Open-Meteo API), Personal Finance Tracker (persistent lists), Flashcard App, News Reader (NewsAPI).

    Prior Knowledge Expected

    Students should be confident in Python (OOP, functions, loops) OR Block-based App Development (variables, event-driven flow). No prior Dart or Flutter experience is required.

    Mobile Apps with Flutter ยท Intermediate ยท Ages 15โ€“17 ยท ยฉ Course Curriculum

    Enroll Your Child Now