Bird
Raised Fist0
Fluttermobile~10 mins

GoRouter package in Flutter - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a GoRouter with a single route to HomeScreen.

Flutter
final router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => [1](),
    ),
  ],
);
Drag options to blanks, or click blank then click option'
AMyApp
BMaterialApp
CScaffold
DHomeScreen
Attempts:
3 left
💡 Hint
Common Mistakes
Using MaterialApp instead of the screen widget.
Forgetting to call the widget constructor with ().
2fill in blank
medium

Complete the code to navigate to '/profile' using GoRouter.

Flutter
ElevatedButton(
  onPressed: () {
    context.go([1]);
  },
  child: Text('Go to Profile'),
);
Drag options to blanks, or click blank then click option'
A'/home'
B'profile'
C'/profile'
D'home'
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting the leading slash in the path string.
Using the wrong path string.
3fill in blank
hard

Fix the error in the GoRoute path to accept a userId parameter.

Flutter
GoRoute(
  path: '/user/[1]',
  builder: (context, state) {
    final userId = state.params['userId']!;
    return UserScreen(userId: userId);
  },
),
Drag options to blanks, or click blank then click option'
A{userId}
B:userId
C:id
D<userId>
Attempts:
3 left
💡 Hint
Common Mistakes
Using curly braces instead of colon for parameters.
Using a different parameter name than in state.params.
4fill in blank
hard

Fill both blanks to create a nested route for settings inside profile.

Flutter
GoRoute(
  path: '/profile',
  builder: (context, state) => ProfileScreen(),
  routes: [
    GoRoute(
      path: [1],
      builder: (context, state) => [2](),
    ),
  ],
),
Drag options to blanks, or click blank then click option'
A'settings'
BSettingsScreen
C'/settings'
DProfileSettings
Attempts:
3 left
💡 Hint
Common Mistakes
Using an absolute path with leading slash for nested routes.
Using wrong widget name in builder.
5fill in blank
hard

Fill all three blanks to create a GoRouter with initial location and error page.

Flutter
final router = GoRouter(
  initialLocation: [1],
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => HomeScreen(),
    ),
  ],
  errorBuilder: (context, state) => [2](),
  debugLogDiagnostics: [3],
);
Drag options to blanks, or click blank then click option'
A'/'
BErrorScreen
Ctrue
D'/home'
Attempts:
3 left
💡 Hint
Common Mistakes
Using a path with leading slash in nested routes.
Not enabling debug logs when needed.

Practice

(1/5)
1. What is the main purpose of the GoRouter package in Flutter?
easy
A. To handle database connections
B. To manage state across widgets
C. To style widgets with custom themes
D. To simplify and manage screen navigation in Flutter apps

Solution

  1. Step 1: Understand GoRouter's role

    GoRouter is designed to make navigation between screens easier and clearer in Flutter apps.
  2. Step 2: Compare with other options

    Options A, C, and D relate to database, styling, and state management, which are not GoRouter's purpose.
  3. Final Answer:

    To simplify and manage screen navigation in Flutter apps -> Option D
  4. Quick Check:

    GoRouter = Navigation helper [OK]
Hint: Remember GoRouter is about moving between screens [OK]
Common Mistakes:
  • Confusing navigation with state management
  • Thinking GoRouter styles widgets
  • Assuming GoRouter handles databases
2. Which of the following is the correct way to navigate to a new route named '/profile' using GoRouter?
easy
A. context.navigateTo('/profile');
B. Navigator.push('/profile');
C. context.go('/profile');
D. goRouter.push('/profile');

Solution

  1. Step 1: Recall GoRouter navigation syntax

    GoRouter uses context.go(path) to navigate to a route.
  2. Step 2: Check each option

    context.go('/profile'); uses context.go('/profile'), which is correct. Options B, C, and D use incorrect methods or objects.
  3. Final Answer:

    context.go('/profile'); -> Option C
  4. Quick Check:

    Use context.go() for navigation [OK]
Hint: Use context.go() with the route path to navigate [OK]
Common Mistakes:
  • Using Navigator.push instead of context.go
  • Calling non-existent methods like context.navigateTo
  • Trying to call goRouter.push without context
3. Given this GoRouter setup:
final router = GoRouter(
  routes: [
    GoRoute(path: '/', builder: (context, state) => HomeScreen()),
    GoRoute(path: '/settings', builder: (context, state) => SettingsScreen()),
  ],
);

// In HomeScreen's button onPressed:
context.go('/settings');
What screen will be displayed after pressing the button?
medium
A. HomeScreen
B. SettingsScreen
C. An error screen
D. A blank screen

Solution

  1. Step 1: Analyze the routes defined

    There are two routes: '/' for HomeScreen and '/settings' for SettingsScreen.
  2. Step 2: Understand the navigation call

    The button calls context.go('/settings'), which navigates to the '/settings' route.
  3. Final Answer:

    SettingsScreen -> Option B
  4. Quick Check:

    context.go('/settings') shows SettingsScreen [OK]
Hint: context.go(path) shows the screen for that path [OK]
Common Mistakes:
  • Assuming context.go('/') stays on HomeScreen
  • Thinking navigation causes error without extra setup
  • Confusing builder with route path
4. What is wrong with this GoRouter route definition?
GoRoute(
  path: '/profile',
  builder: (context) => ProfileScreen(),
)
medium
A. The builder function is missing the second parameter 'state'
B. The path should start with a capital letter
C. ProfileScreen() must be wrapped in a MaterialApp
D. GoRoute requires a name property

Solution

  1. Step 1: Check GoRoute builder signature

    The builder function must accept two parameters: context and state.
  2. Step 2: Identify the error

    The code only has one parameter (context), missing the required 'state' parameter.
  3. Final Answer:

    The builder function is missing the second parameter 'state' -> Option A
  4. Quick Check:

    builder(context, state) needs two parameters [OK]
Hint: Builder always needs (context, state) parameters [OK]
Common Mistakes:
  • Omitting the 'state' parameter in builder
  • Thinking path must be capitalized
  • Assuming name property is mandatory
  • Wrapping screen in MaterialApp inside builder
5. You want to pass a user ID as a parameter in the route path using GoRouter. Which route definition and navigation call are correct?
// Route definition options:
A) GoRoute(path: '/user/:id', builder: (context, state) => UserScreen(id: state.params['id']!))
B) GoRoute(path: '/user', builder: (context, state) => UserScreen(id: state.params['id']!))

// Navigation call options:
1) context.go('/user/123');
2) context.go('/user?id=123');
hard
A. Use route A with navigation call 1
B. Use route A with navigation call 2
C. Use route B with navigation call 1
D. Use route B with navigation call 2

Solution

  1. Step 1: Understand route parameter syntax

    Route path with ':id' means the ID is part of the path, so '/user/:id' is correct for path parameters.
  2. Step 2: Match navigation call to route

    To pass the ID in the path, navigation must be like '/user/123', so call 1 matches route A.
  3. Final Answer:

    Use route A with navigation call 1 -> Option A
  4. Quick Check:

    Path param ':id' needs '/user/123' navigation [OK]
Hint: Use ':param' in path and '/value' in go() call [OK]
Common Mistakes:
  • Using query parameters with path param syntax
  • Missing ':id' in route path
  • Passing ID as query string when route expects path param
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