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