Want to more space between checkmark and checkbox padding
code
Transform.scale(
scale: 1.3,
child: Checkbox(
checkColor: AppColors.buttonColor,
activeColor: AppColors.textWhiteColor,
side: MaterialStateBorderSide.resolveWith(
(states) => BorderSide(
width: 1.0, color: AppColors.unSelectedColor),
),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
value: isCheck,
onChanged: (value) {
setState(() {
isCheck = value!;
});
}),
),
when checkbox active border color blue and padding between checkmark and checkbox border
CodePudding user response:
Facing same issue
and remember, first try to checkbox active border color change without setstate
CodePudding user response:
Please check below source for custom checkbox. This will fulfill your requirement.
Source:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
class CustomCheckBox extends StatefulWidget {
final bool value;
final ValueChanged<bool> onChanged;
final Color checkedIconColor;
final Color checkedFillColor;
final IconData checkedIcon;
final Color uncheckedIconColor;
final Color uncheckedFillColor;
final IconData uncheckedIcon;
final double? borderWidth;
final double? checkBoxSize;
final bool shouldShowBorder;
final Color? borderColor;
final double? borderRadius;
final double? splashRadius;
final Color? splashColor;
final String? tooltip;
final MouseCursor? mouseCursors;
const CustomCheckBox({
Key? key,
required this.value,
required this.onChanged,
this.checkedIconColor = Colors.white,
this.checkedFillColor = Colors.teal,
this.checkedIcon = Icons.check,
this.uncheckedIconColor = Colors.white,
this.uncheckedFillColor = Colors.white,
this.uncheckedIcon = Icons.close,
this.borderWidth,
this.checkBoxSize,
this.shouldShowBorder = false,
this.borderColor,
this.borderRadius,
this.splashRadius,
this.splashColor,
this.tooltip,
this.mouseCursors,
}) : super(key: key);
@override
_CustomCheckBoxState createState() => _CustomCheckBoxState();
}
class _CustomCheckBoxState extends State<CustomCheckBox> {
late bool _checked;
late CheckStatus _status;
@override
void initState() {
super.initState();
_init();
}
@override
void didUpdateWidget(CustomCheckBox oldWidget) {
super.didUpdateWidget(oldWidget);
_init();
}
void _init() {
_checked = widget.value;
if (_checked) {
_status = CheckStatus.checked;
} else {
_status = CheckStatus.unchecked;
}
}
Widget _buildIcon() {
late Color fillColor;
late Color iconColor;
late IconData iconData;
switch (_status) {
case CheckStatus.checked:
fillColor = widget.checkedFillColor;
iconColor = widget.checkedIconColor;
iconData = widget.checkedIcon;
break;
case CheckStatus.unchecked:
fillColor = widget.uncheckedFillColor;
iconColor = widget.uncheckedIconColor;
iconData = widget.uncheckedIcon;
break;
}
return Container(
padding: EdgeInsets.zero,
decoration: BoxDecoration(
color: fillColor,
borderRadius: BorderRadius.all(Radius.circular(widget.borderRadius ?? 6)),
border: Border.all(
color: widget.shouldShowBorder ? (widget.borderColor ?? Colors.teal.withOpacity(0.6)) : (!widget.value ? (widget.borderColor ?? Colors.teal.withOpacity(0.6)) : Colors.transparent),
width: widget.shouldShowBorder ? widget.borderWidth ?? 2.0 : 1.0,
),
),
child: Icon(
iconData,
color: iconColor,
size: widget.checkBoxSize ?? 18,
),
);
}
@override
Widget build(BuildContext context) {
return IconButton(
icon: _buildIcon(),
onPressed: () => widget.onChanged(!_checked),
splashRadius: widget.splashRadius,
splashColor: widget.splashColor,
tooltip: widget.tooltip,
mouseCursor: widget.mouseCursors ?? SystemMouseCursors.click,
);
}
}
enum CheckStatus {
checked,
unchecked,
}
Link: https://github.com/DipakShrestha-ADS/custom_check_box/blob/master/lib/custom_check_box.dart