A cleaner solution to this problem is to make a class that extends FormField<bool>
Here is how I accomplished this:
import 'package:flutter/material.dart';
class CheckboxFormField extends FormField<bool> {
CheckboxFormField(
{Widget? title,
FormFieldSetter<bool>? onSaved,
FormFieldValidator<bool>? validator,
bool initialValue = false,
bool autovalidate = false})
: super(
onSaved: onSaved,
validator: validator,
initialValue: initialValue,
builder: (FormFieldState<bool> state) {
return CheckboxListTile(
dense: state.hasError,
title: title,
value: state.value,
onChanged: state.didChange,
subtitle: state.hasError
? Builder(
builder: (BuildContext context) => Text(
state.errorText ?? "",
style: TextStyle(
color: Theme.of(context).colorScheme.error),
),
)
: null,
controlAffinity: ListTileControlAffinity.leading,
);
});
}