Bird
Raised Fist0
Fluttermobile~5 mins

Control flow (if, for, while, switch) in Flutter

Choose your learning style10 modes available
Introduction

Control flow helps your app decide what to do next. It lets your app choose between options, repeat tasks, or pick actions based on conditions.

Show a message only if a user is logged in.
Repeat a list of items to display them on the screen.
Keep asking for input until the user provides a valid answer.
Choose different screens to show based on user choices.
Syntax
Flutter
if (condition) {
  // code to run if condition is true
} else if (anotherCondition) {
  // code if anotherCondition is true
} else {
  // code if none above are true
}

for (var item in collection) {
  // code to run for each item
}

while (condition) {
  // code to repeat while condition is true
}

switch (variable) {
  case value1:
    // code for value1
    break;
  case value2:
    // code for value2
    break;
  default:
    // code if no case matches
    break;
}

if checks conditions and runs code accordingly.

for repeats code for each item in a list.

while repeats code while a condition stays true.

switch picks code to run based on a variable's value.

Examples
Checks if age is 18 or more, then prints 'Adult', otherwise 'Child'.
Flutter
if (age >= 18) {
  print('Adult');
} else {
  print('Child');
}
Prints 'Number 0', 'Number 1', and 'Number 2' one by one.
Flutter
for (var i = 0; i < 3; i++) {
  print('Number $i');
}
Repeats printing count until it reaches 3.
Flutter
int count = 0;
while (count < 3) {
  print('Count is $count');
  count++;
}
Prints 'Stop' because color is 'red'.
Flutter
var color = 'red';
switch (color) {
  case 'red':
    print('Stop');
    break;
  case 'green':
    print('Go');
    break;
  default:
    print('Wait');
    break;
}
Sample App

This app shows a greeting based on the current time. It uses if and else if to pick the right greeting.

Flutter
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    int hour = DateTime.now().hour;
    String greeting;

    if (hour < 12) {
      greeting = 'Good morning!';
    } else if (hour < 18) {
      greeting = 'Good afternoon!';
    } else {
      greeting = 'Good evening!';
    }

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Control Flow Example')),
        body: Center(
          child: Text(
            greeting,
            style: const TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}
OutputSuccess
Important Notes

Always make sure your while loops have a way to stop, or your app may freeze.

Use break; in switch cases to stop checking further cases.

Indent your code inside control flow blocks to keep it clear and easy to read.

Summary

Control flow lets your app make decisions and repeat tasks.

if, for, while, and switch are common ways to control flow.

Use them to create interactive and dynamic apps.

Practice

(1/5)
1. Which control flow statement in Flutter is used to make decisions based on conditions?
easy
A. if
B. for
C. while
D. switch

Solution

  1. Step 1: Understand the purpose of control flow statements

    if statements let the app choose between actions based on conditions.
  2. Step 2: Identify the decision-making statement

    Among the options, only if directly tests a condition to decide what code runs.
  3. Final Answer:

    if -> Option A
  4. Quick Check:

    Decision making = if [OK]
Hint: Use if to check conditions and decide [OK]
Common Mistakes:
  • Confusing for loops with decision making
  • Thinking while is for choices instead of repetition
  • Assuming switch is the only decision tool
2. Which of the following is the correct syntax for a for loop in Flutter to print numbers 0 to 4?
easy
A. for (int i = 1; i < 5; i++) { print(i); }
B. for i in 0 to 4 { print(i); }
C. for (int i = 0; i < 5; i++) { print(i); }
D. for (i = 0; i <= 5; i++) print(i);

Solution

  1. Step 1: Check the loop initialization and condition

    for (int i = 0; i < 5; i++) { print(i); } initializes i at 0 and loops while i < 5, which prints 0 to 4.
  2. Step 2: Verify syntax correctness

    for (int i = 0; i < 5; i++) { print(i); } uses correct Dart syntax with types and braces.
  3. Final Answer:

    for (int i = 0; i < 5; i++) { print(i); } -> Option C
  4. Quick Check:

    Correct Dart for loop syntax = for (int i = 0; i < 5; i++) { print(i); } [OK]
Hint: Remember Dart for loops use semicolons and braces [OK]
Common Mistakes:
  • Using Python-style loops like 'for i in 0 to 4'
  • Off-by-one errors in loop conditions
  • Missing type declaration for loop variable
3. What will be the output of this Flutter Dart code?
int count = 0;
while (count < 3) {
  print(count);
  count++;
}
medium
A. 1 2 3
B. No output
C. 0 1 2 3
D. 0 1 2

Solution

  1. Step 1: Analyze the while loop condition and increments

    The loop starts with count = 0 and runs while count < 3, printing count each time.
  2. Step 2: Trace the printed values

    It prints 0, then increments to 1, prints 1, increments to 2, prints 2, increments to 3, then stops.
  3. Final Answer:

    0 1 2 -> Option D
  4. Quick Check:

    Loop prints values less than 3 = 0 1 2 [OK]
Hint: Count starts at 0 and stops before 3, so prints 0,1,2 [OK]
Common Mistakes:
  • Including 3 in output mistakenly
  • Confusing post-increment behavior
  • Thinking loop runs zero times
4. Identify the error in this Flutter Dart code snippet:
int i = 0;
while (i < 5) {
  print(i);
}
medium
A. Missing increment of i inside the loop
B. Incorrect while loop syntax
C. Variable i should be declared inside the loop
D. print() cannot be used inside loops

Solution

  1. Step 1: Check loop control variables

    The variable i is initialized but never changed inside the loop.
  2. Step 2: Understand loop behavior

    Without incrementing i, the condition i < 5 is always true, causing an infinite loop.
  3. Final Answer:

    Missing increment of i inside the loop -> Option A
  4. Quick Check:

    Loops need changing variables to stop [OK]
Hint: Always update loop variables to avoid infinite loops [OK]
Common Mistakes:
  • Forgetting to increment loop counters
  • Assuming loop ends automatically
  • Misunderstanding while loop syntax
5. You want to display a message in Flutter based on a user's score:
int score = 75;
switch (score ~/ 10) {
  case 10:
  case 9:
    print('Excellent');
    break;
  case 8:
    print('Very Good');
    break;
  case 7:
    print('Good');
    break;
  default:
    print('Keep Trying');
}

What message will be printed?
hard
A. Excellent
B. Good
C. Very Good
D. Keep Trying

Solution

  1. Step 1: Calculate the switch expression value

    score is 75, so score ~/ 10 is integer division 75/10 = 7.
  2. Step 2: Match the case for value 7

    Case 7 matches and prints 'Good'.
  3. Final Answer:

    Good -> Option B
  4. Quick Check:

    Integer division selects case 7 = 'Good' [OK]
Hint: Use integer division to group scores in switch cases [OK]
Common Mistakes:
  • Forgetting integer division operator ~/
  • Assuming score matches case directly
  • Missing break statements causing fall-through
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard