Checkbox class

A check box is used to select or deselect action items.

It can be used for a single item or for a list of multiple items that a user can choose from. The control has three selection states: unselected (false), selected (true), and indeterminate (null). Use the indeterminate state when a collection of sub-choices have both unselected and selected states.

Checkbox Preview

{@tool snippet} This example shows a basic checkbox:

bool isChecked = false;

Checkbox(
  checked: isChecked,
  onChanged: (value) => setState(() => isChecked = value ?? false),
)

{@end-tool}

{@tool snippet} This example shows a checkbox with a label:

Checkbox(
  checked: isAccepted,
  content: Text('I accept the terms and conditions'),
  onChanged: (value) => setState(() => isAccepted = value ?? false),
)

{@end-tool}

{@tool snippet} This example shows a three-state checkbox used to represent a group:

// null = indeterminate (some children checked)
// true = all children checked
// false = no children checked
bool? parentChecked;

Checkbox(
  checked: parentChecked,
  content: Text('Select all'),
  onChanged: (value) {
    setState(() {
      // When clicked, toggle between checked and unchecked
      parentChecked = value == true ? true : false;
    });
  },
)

{@end-tool}

Checkbox vs other controls

Use a checkbox when:

  • Users can select zero, one, or multiple items from a list
  • Items in the list are independent (selecting one doesn't affect others)
  • You want to show the current selection state at a glance

Consider using:

  • RadioButton when users must select exactly one option
  • ToggleSwitch for binary on/off settings that take effect immediately
  • ToggleButton for a button that maintains a toggled state

See also:

Inheritance

Constructors

Checkbox({required bool? checked, required ValueChanged<bool?>? onChanged, Key? key, CheckboxThemeData? style, Widget? content, String? semanticLabel, FocusNode? focusNode, bool autofocus = false})
Creates a checkbox.
const

Properties

autofocus bool
True if this widget will be selected as the initial focus when no other node in its scope is currently focused.
final
checked bool?
Whether the checkbox is checked or not.
final
content Widget?
The content of the radio button.
final
focusNode FocusNode?
An optional focus node to use as the focus node for this widget.
final
hashCode int
The hash code for this object.
no setterinherited
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onChanged ValueChanged<bool?>?
Called when the value of the Checkbox should change.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
semanticLabel String?
Semantic label for the input.
final
style CheckboxThemeData?
The style applied to the checkbox. If non-null, it's mescled with FluentThemeData.checkboxThemeData
final

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
override
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited