0
0
Fluttermobile~20 mins

Custom painters (CustomPaint) in Flutter - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
CustomPaint Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ui_behavior
intermediate
2:00remaining
What does this CustomPainter draw?
Look at the CustomPainter code below. What shape will appear on the screen?
Flutter
class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.blue
      ..style = PaintingStyle.fill;
    canvas.drawCircle(Offset(size.width / 2, size.height / 2), 50, paint);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
AA blue outlined circle with radius 50
BA blue filled circle centered in the widget with radius 50
CA blue filled square centered in the widget with side 50
DNothing is drawn because paint method is empty
Attempts:
2 left
💡 Hint
Look at the drawCircle method and the paint style used.
lifecycle
intermediate
1:30remaining
When does shouldRepaint get called?
In a CustomPainter, when is the shouldRepaint method called by Flutter?
AEvery time the widget is rebuilt to decide if repaint is needed
BOnly once when the app starts
CNever, it is not used by Flutter
DOnly when the app is closed
Attempts:
2 left
💡 Hint
Think about when Flutter needs to know if it should redraw the custom painting.
📝 Syntax
advanced
2:00remaining
What error does this CustomPainter code cause?
What error will this CustomPainter code produce when run?
Flutter
class BadPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.red
      ..style = PaintingStyle.fill;
    canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
ASyntaxError due to missing closing parenthesis in drawRect call
BRuntime error because Rect.fromLTWH is invalid
CTypeError because paint is not initialized
DNo error, draws a red rectangle filling the widget
Attempts:
2 left
💡 Hint
Check the parentheses in the drawRect line carefully.
navigation
advanced
2:30remaining
How to update CustomPaint when data changes?
You have a CustomPainter that draws based on a variable color. How do you make sure the CustomPaint updates when the color changes?
AUse a StatefulWidget but never override shouldRepaint
BCall setState inside the paint method
CPass the color as a field to the CustomPainter and override shouldRepaint to compare old and new colors
DRecreate the CustomPainter without passing the color
Attempts:
2 left
💡 Hint
Think about how Flutter knows when to repaint a CustomPainter.
🧠 Conceptual
expert
3:00remaining
Why use CustomPaint instead of regular widgets?
Which is the best reason to use CustomPaint with a CustomPainter instead of composing regular widgets?
ATo make the app run faster by skipping layout
BTo reduce app size by avoiding widgets
CTo automatically handle user input without extra code
DTo draw complex graphics efficiently that are not possible with standard widgets
Attempts:
2 left
💡 Hint
Think about what CustomPainter gives you that widgets do not.