Untitled
unknown
dart
3 years ago
1.9 kB
6
Indexable
class CustomCheckbox extends StatefulWidget {
const CustomCheckbox({
Key? key,
this.onChange,
this.isChecked,
this.size,
this.iconSize,
this.selectedColor,
this.selectedIconColor,
this.borderColor,
this.checkIcon,
}) : super(key: key);
final Function? onChange;
final bool? isChecked;
final double? size;
final double? iconSize;
final Color? selectedColor;
final Color? selectedIconColor;
final Color? borderColor;
final Widget? checkIcon;
@override
_CustomCheckboxState createState() => _CustomCheckboxState();
}
class _CustomCheckboxState extends State<CustomCheckbox> {
bool _isSelected = false;
@override
void initState() {
_isSelected = widget.isChecked ?? false;
super.initState();
}
@override
Widget build(BuildContext context) {
ThemeNotifier themeNotifier = Provider.of<ThemeNotifier>(
context,
listen: true,
);
return GestureDetector(
onTap: () {
setState(() {
_isSelected = !_isSelected;
widget.onChange!(_isSelected);
});
},
child: AnimatedContainer(
duration: const Duration(milliseconds: 500),
curve: Curves.fastLinearToSlowEaseIn,
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.circular(6.0),
border: Border.all(
color: widget.borderColor ?? themeNotifier.getTheme().hoverColor,
width: 1,
),
),
width: widget.size ?? 25,
height: widget.size ?? 25,
child: _isSelected
? Icon(
Icons.check,
color: widget.selectedIconColor ??
themeNotifier.getTheme().hoverColor,
size: widget.iconSize ?? 14,
)
: null,
),
);
}
}Editor is loading...