Bool Knob

The bool knob renders a toggle switch in the Widgetbook UI where you can dynamically toggle a bool value for a widget property.

Varients

The bool knob has two variants:

  • context.knobs.bool(): This variant allows you to toggle a bool value. It does not accept null values.
  • context.knobs.boolOrNull(): This variant allows you to toggle a bool value or null. It is useful when the property can be optional.

context.knobs.bool()

Properties

Besides the knob's base properties, the bool knob does not feature any additional properties.

Example

Usage

To use a bool knob, call the context.knobs.bool() method.

Example: Bool Knob
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

@UseCase(type: Checkbox, name: 'Duo state')
Widget buildCheckboxUseCase(BuildContext context) {
  return Checkbox(
    value: context.knobs.boolean(label: 'value'), 
    onChanged: (value) {},
  );
}

context.knobs.boolOrNull()

Properties

Besides the knob's base properties, the nullable bool knob does not feature any additional properties.

Example

Usage

To use the nullable bool knob, call the context.knobs.boolOrNull() method.

Example: Nullable Bool Knob
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

@UseCase(type: Checkbox, name: 'Tristate')
Widget buildCheckboxUseCase(BuildContext context) {
  return Checkbox(
    value: context.knobs.booleanOrNull(label: 'value'), 
    tristate: true,
    onChanged: (value) {},
  );
}

Multi-snapshot Support

Multi-snapshot support allows you to generate multiple screenshots of a single use case with varying values using KnobsConfigs and AddonsConfigs.

Regular Bool Knob

Example: BooleanKnobConfig
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

@UseCase(
  type: Checkbox,
  name: 'Duo state',
  cloudKnobsConfigs: { 
    'Checked': [BooleanKnobConfig('value', true)], 
    'Unchecked': [BooleanKnobConfig('value', false)], 
  }, 
)
Widget buildCheckboxUseCase(BuildContext context) {
  return Checkbox(
    value: context.knobs.boolean(label: 'value'),
    onChanged: (value) {},
  );
}

Nullable Bool Knob

Example: NullKnobConfig
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

@UseCase(
  type: Checkbox,
  name: 'Tristate',
  cloudKnobsConfigs: { 
    'Mixed': [NullKnobConfig('value')], 
    'Checked': [BooleanKnobConfig('value', true)], 
    'Unchecked': [BooleanKnobConfig('value', false)], 
  }, 
)
Widget buildCheckboxUseCase(BuildContext context) {
  return Checkbox(
    value: context.knobs.booleanOrNull(label: 'value'),
    onChanged: (value) {},
  );
}