Bird
Raised Fist0
Fluttermobile~20 mins

Control flow (if, for, while, switch) in Flutter - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Control Flow Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What will this Flutter widget display?
Consider this Flutter code snippet. What text will appear on the screen?
Flutter
import 'package:flutter/material.dart';

class MyWidget extends StatelessWidget {
  final int count = 3;

  @override
  Widget build(BuildContext context) {
    String message = '';
    for (int i = 0; i < count; i++) {
      if (i == 2) {
        message += 'End';
      } else {
        message += 'Step ' + i.toString() + ', ';
      }
    }
    return Text(message);
  }
}
AStep 0, Step 1, Step 2, End
BStep 0, Step 1, End
CStep 0, Step 1,
DEnd
Attempts:
2 left
💡 Hint
Look at the loop and what happens when i equals 2.
❓ lifecycle
intermediate
2:00remaining
What happens when this Flutter StatefulWidget runs?
Given this Flutter StatefulWidget code, what will be the value of counter after pressing the button twice?
Flutter
import 'package:flutter/material.dart';

class CounterWidget extends StatefulWidget {
  @override
  State<CounterWidget> createState() => _CounterWidgetState();
}

class _CounterWidgetState extends State<CounterWidget> {
  int counter = 0;

  void increment() {
    setState(() {
      counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: increment,
      child: Text('Count: $counter'),
    );
  }
}
ACount: 0
BCount: 1
CCount: 2
DCount: null
Attempts:
2 left
💡 Hint
Each button press calls increment which increases counter by 1.
📝 Syntax
advanced
2:00remaining
What error does this Flutter code produce?
Look at this Flutter code snippet. What error will it cause when compiled?
Flutter
import 'package:flutter/material.dart';

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    int x = 5;
    if (x > 3) {
      return Text('Greater');
    } else {
      return Text('Smaller');
    }
  }
}
ASyntaxError: Missing parentheses in if statement
BRuntimeError: Variable x not defined
CNo error, outputs 'Greater'
DTypeError: Cannot compare int with int
Attempts:
2 left
💡 Hint
Check the syntax of the if statement in Dart.
❓ navigation
advanced
2:00remaining
What screen will show after this navigation code runs?
In this Flutter code, what screen will appear after pressing the button?
Flutter
import 'package:flutter/material.dart';

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        Navigator.pushReplacement(
          context,
          MaterialPageRoute(builder: (context) => SecondScreen()),
        );
      },
      child: Text('Go to Second'),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Second Screen');
  }
}
ASecond Screen appears and FirstScreen is removed from stack
BSecond Screen appears but FirstScreen remains in stack
CFirstScreen remains visible, no navigation happens
DApp crashes due to navigation error
Attempts:
2 left
💡 Hint
pushReplacement replaces the current screen with the new one.
🧠 Conceptual
expert
2:00remaining
What is the output of this Flutter switch statement?
Given this Dart switch statement inside a Flutter widget, what text will be displayed if value is 2?
Flutter
import 'package:flutter/material.dart';

class SwitchWidget extends StatelessWidget {
  final int value = 2;

  @override
  Widget build(BuildContext context) {
    String result;
    switch (value) {
      case 1:
        result = 'One';
        break;
      case 2:
      case 3:
        result = 'Two or Three';
        break;
      default:
        result = 'Other';
    }
    return Text(result);
  }
}
AOne
BOther
CError: Missing break statement
DTwo or Three
Attempts:
2 left
💡 Hint
Cases 2 and 3 share the same output.

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