Bird
Raised Fist0
Fluttermobile~3 mins

Why ElevatedButton and TextButton in Flutter? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could add perfect buttons with just one line of code?

The Scenario

Imagine you want to add buttons to your app by drawing them pixel by pixel or placing images for each button manually.

You have to handle all the touch areas, colors, shadows, and states yourself.

The Problem

This manual way is slow and tricky.

You might forget to change the button color when pressed or miss making it look clickable.

It's easy to make buttons that don't look or feel right on different devices.

The Solution

Flutter's ElevatedButton and TextButton give you ready-made buttons that look good and behave correctly.

They handle colors, shadows, and touch feedback automatically.

You just write a few lines and get nice buttons that work everywhere.

Before vs After
✗ Before
GestureDetector(onTap: () { print('Clicked'); }, child: Container(width: 100, height: 40, color: Colors.blue))
✓ After
ElevatedButton(onPressed: () { print('Clicked'); }, child: Text('Click me'))
What It Enables

You can quickly add beautiful, responsive buttons that follow design rules without extra work.

Real Life Example

When making a login screen, you use ElevatedButton for the main "Sign In" button and TextButton for "Forgot Password?" links, ensuring clear and consistent user actions.

Key Takeaways

Manual button creation is slow and error-prone.

ElevatedButton and TextButton provide ready-to-use, stylish buttons.

They save time and improve app look and feel automatically.

Practice

(1/5)
1. Which Flutter button widget shows a background color and shadow by default?
easy
A. FlatButton
B. TextButton
C. IconButton
D. ElevatedButton

Solution

  1. Step 1: Understand button types in Flutter

    ElevatedButton has a background and shadow, TextButton is flat with no background.
  2. Step 2: Identify the button with background and shadow

    ElevatedButton is designed to have elevation and background color by default.
  3. Final Answer:

    ElevatedButton -> Option D
  4. Quick Check:

    ElevatedButton = background + shadow [OK]
Hint: ElevatedButton has elevation; TextButton is flat [OK]
Common Mistakes:
  • Confusing TextButton as having background
  • Thinking IconButton has background by default
  • Using deprecated FlatButton
2. Which of the following is the correct syntax to create a TextButton with label 'Click' and a print action on press?
easy
A. TextButton(onClick: () => print('Clicked'), child: Text('Click'))
B. TextButton(child: Text('Click'), onTap: () => print('Clicked'))
C. TextButton(onPressed: () => print('Clicked'), child: Text('Click'))
D. TextButton(onPressed: print('Clicked'), child: 'Click')

Solution

  1. Step 1: Check correct property names

    TextButton uses onPressed for tap events and child for its label widget.
  2. Step 2: Verify syntax correctness

    TextButton(onPressed: () => print('Clicked'), child: Text('Click')) correctly uses onPressed with a lambda and child with Text widget.
  3. Final Answer:

    TextButton(onPressed: () => print('Clicked'), child: Text('Click')) -> Option C
  4. Quick Check:

    onPressed + child: Text = correct syntax [OK]
Hint: Use onPressed and child: Text for buttons [OK]
Common Mistakes:
  • Using onClick instead of onPressed
  • Passing string directly as child instead of Text widget
  • Calling print inside onPressed instead of passing a function
3. What will be the visual difference when running this Flutter code?
ElevatedButton(onPressed: () {}, child: Text('Press'))
TextButton(onPressed: () {}, child: Text('Press'))
medium
A. ElevatedButton has background and shadow; TextButton is flat with only text
B. Both buttons look the same with background and shadow
C. TextButton has background; ElevatedButton is flat
D. Both buttons are invisible because onPressed is empty

Solution

  1. Step 1: Understand default styles of ElevatedButton and TextButton

    ElevatedButton shows background color and shadow; TextButton is flat with no background.
  2. Step 2: Analyze the given code

    Both have onPressed defined, so both are enabled and visible; their styles differ as per their types.
  3. Final Answer:

    ElevatedButton has background and shadow; TextButton is flat with only text -> Option A
  4. Quick Check:

    ElevatedButton = raised, TextButton = flat [OK]
Hint: ElevatedButton raised, TextButton flat text only [OK]
Common Mistakes:
  • Thinking empty onPressed disables button
  • Assuming TextButton has background by default
  • Confusing visual styles of both buttons
4. Identify the error in this Flutter button code:
ElevatedButton(
  onPressed: print('Clicked'),
  child: Text('Tap me'),
)
medium
A. child should be a string, not Text widget
B. onPressed should be a function, not a function call
C. ElevatedButton does not accept onPressed property
D. Missing semicolon after ElevatedButton

Solution

  1. Step 1: Check onPressed assignment

    onPressed expects a function to call when pressed, not the result of a function call.
  2. Step 2: Identify the mistake

    print('Clicked') is called immediately; should be wrapped in a lambda like () => print('Clicked').
  3. Final Answer:

    onPressed should be a function, not a function call -> Option B
  4. Quick Check:

    onPressed = function, not function call [OK]
Hint: Pass function to onPressed, not call it directly [OK]
Common Mistakes:
  • Calling print inside onPressed instead of passing a function
  • Using string instead of Text widget for child
  • Assuming ElevatedButton lacks onPressed
5. You want a button that looks flat but disables itself when pressed. Which Flutter widget and property combination achieves this best?
hard
A. TextButton with onPressed set to null after press
B. ElevatedButton with onPressed set to null after press
C. TextButton with onPressed always non-null
D. ElevatedButton with child set to null

Solution

  1. Step 1: Understand button disabling in Flutter

    Setting onPressed to null disables the button visually and functionally.
  2. Step 2: Choose button style and disabling method

    TextButton is flat; disabling it by setting onPressed to null after press fits the requirement.
  3. Step 3: Eliminate incorrect options

    ElevatedButton is raised, not flat; child cannot disable button; onPressed non-null keeps button enabled.
  4. Final Answer:

    TextButton with onPressed set to null after press -> Option A
  5. Quick Check:

    Disable button by onPressed = null [OK]
Hint: Disable button by setting onPressed to null [OK]
Common Mistakes:
  • Thinking child null disables button
  • Using ElevatedButton for flat style
  • Not setting onPressed to null to disable
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