123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import 'package:flutter/material.dart';
- class LabeledCheckbox extends StatelessWidget {
- const LabeledCheckbox({
- Key? key,
- required this.label,
- required this.padding,
- required this.value,
- required this.onChanged,
- this.mainAxisAlignment = MainAxisAlignment.start,
- this.pageName = 'LabeledCheckbox',
- }) : super(key: key);
- @override
- final String pageName;
- /// 选择框文案
- final Widget label;
- final MainAxisAlignment mainAxisAlignment;
- /// 间距
- final EdgeInsets padding;
- /// 选择值
- final bool value;
- /// 选择回调
- final Function onChanged;
- @override
- Widget build(BuildContext context) {
- final labeledCheckboxbody = Padding(
- padding: padding,
- child: Flex(
- direction: Axis.horizontal,
- mainAxisAlignment: mainAxisAlignment,
- children: [
- SizedBox(
- width: 28,
- child: Checkbox(
- value: value,
- checkColor: Colors.white,
- shape: RoundedRectangleBorder(
- side: BorderSide.none,
- borderRadius: BorderRadius.circular(4),
- ),
- activeColor: Theme.of(context).primaryColor,
- onChanged: (bool? newValue) {
- onChanged(newValue);
- },
- ),
- ),
- Flexible(
- flex: 0,
- child: label,
- ),
- ],
- ),
- );
- return GestureDetector(
- child: labeledCheckboxbody,
- onTap: () => onChanged(!value),
- );
- }
- }
|