| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- import 'package:flutter_quill/flutter_quill.dart';
 
- import 'package:flutter_quill/models/documents/style.dart';
 
- import 'package:flutter/material.dart';
 
- import 'toolbar_icon_button.dart';
 
- class FlowyCheckListButton extends StatefulWidget {
 
-   const FlowyCheckListButton({
 
-     required this.controller,
 
-     required this.attribute,
 
-     required this.tooltipText,
 
-     this.iconSize = defaultIconSize,
 
-     this.fillColor,
 
-     this.childBuilder = defaultToggleStyleButtonBuilder,
 
-     Key? key,
 
-   }) : super(key: key);
 
-   final double iconSize;
 
-   final Color? fillColor;
 
-   final QuillController controller;
 
-   final ToggleStyleButtonBuilder childBuilder;
 
-   final Attribute attribute;
 
-   final String tooltipText;
 
-   @override
 
-   _FlowyCheckListButtonState createState() => _FlowyCheckListButtonState();
 
- }
 
- class _FlowyCheckListButtonState extends State<FlowyCheckListButton> {
 
-   bool? _isToggled;
 
-   Style get _selectionStyle => widget.controller.getSelectionStyle();
 
-   void _didChangeEditingValue() {
 
-     setState(() {
 
-       _isToggled =
 
-           _getIsToggled(widget.controller.getSelectionStyle().attributes);
 
-     });
 
-   }
 
-   @override
 
-   void initState() {
 
-     super.initState();
 
-     _isToggled = _getIsToggled(_selectionStyle.attributes);
 
-     widget.controller.addListener(_didChangeEditingValue);
 
-   }
 
-   bool _getIsToggled(Map<String, Attribute> attrs) {
 
-     if (widget.attribute.key == Attribute.list.key) {
 
-       final attribute = attrs[widget.attribute.key];
 
-       if (attribute == null) {
 
-         return false;
 
-       }
 
-       return attribute.value == widget.attribute.value ||
 
-           attribute.value == Attribute.checked.value;
 
-     }
 
-     return attrs.containsKey(widget.attribute.key);
 
-   }
 
-   @override
 
-   void didUpdateWidget(covariant FlowyCheckListButton oldWidget) {
 
-     super.didUpdateWidget(oldWidget);
 
-     if (oldWidget.controller != widget.controller) {
 
-       oldWidget.controller.removeListener(_didChangeEditingValue);
 
-       widget.controller.addListener(_didChangeEditingValue);
 
-       _isToggled = _getIsToggled(_selectionStyle.attributes);
 
-     }
 
-   }
 
-   @override
 
-   void dispose() {
 
-     widget.controller.removeListener(_didChangeEditingValue);
 
-     super.dispose();
 
-   }
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     return ToolbarIconButton(
 
-       onPressed: _toggleAttribute,
 
-       width: widget.iconSize * kIconButtonFactor,
 
-       iconName: 'editor/checkbox',
 
-       isToggled: _isToggled ?? false,
 
-       tooltipText: widget.tooltipText,
 
-     );
 
-   }
 
-   void _toggleAttribute() {
 
-     widget.controller.formatSelection(_isToggled!
 
-         ? Attribute.clone(Attribute.unchecked, null)
 
-         : Attribute.unchecked);
 
-   }
 
- }
 
 
  |