mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-31 18:15:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flowy_infra/image.dart';
 | |
| import 'package:flowy_infra/theme.dart';
 | |
| import 'package:flowy_infra_ui/style_widget/icon_button.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_quill/flutter_quill.dart';
 | |
| 
 | |
| class StyleWidgetBuilder {
 | |
|   static QuillCheckboxBuilder checkbox(AppTheme theme) {
 | |
|     return EditorCheckboxBuilder(theme);
 | |
|   }
 | |
| }
 | |
| 
 | |
| class EditorCheckboxBuilder extends QuillCheckboxBuilder {
 | |
|   final AppTheme theme;
 | |
| 
 | |
|   EditorCheckboxBuilder(this.theme);
 | |
| 
 | |
|   @override
 | |
|   Widget build(
 | |
|       {required BuildContext context,
 | |
|       required bool isChecked,
 | |
|       required ValueChanged<bool> onChanged}) {
 | |
|     return FlowyEditorCheckbox(
 | |
|       theme: theme,
 | |
|       isChecked: isChecked,
 | |
|       onChanged: onChanged,
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class FlowyEditorCheckbox extends StatefulWidget {
 | |
|   final bool isChecked;
 | |
|   final ValueChanged<bool> onChanged;
 | |
|   final AppTheme theme;
 | |
|   const FlowyEditorCheckbox({
 | |
|     required this.theme,
 | |
|     required this.isChecked,
 | |
|     required this.onChanged,
 | |
|     Key? key,
 | |
|   }) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   FlowyEditorCheckboxState createState() => FlowyEditorCheckboxState();
 | |
| }
 | |
| 
 | |
| class FlowyEditorCheckboxState extends State<FlowyEditorCheckbox> {
 | |
|   late bool isChecked;
 | |
| 
 | |
|   @override
 | |
|   void initState() {
 | |
|     isChecked = widget.isChecked;
 | |
|     super.initState();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     final icon = isChecked
 | |
|         ? svgWidget('editor/editor_check')
 | |
|         : svgWidget('editor/editor_uncheck');
 | |
|     return Align(
 | |
|       alignment: Alignment.centerLeft,
 | |
|       child: FlowyIconButton(
 | |
|         onPressed: () {
 | |
|           isChecked = !isChecked;
 | |
|           widget.onChanged(isChecked);
 | |
|           setState(() {});
 | |
|         },
 | |
|         iconPadding: EdgeInsets.zero,
 | |
|         icon: icon,
 | |
|         width: 23,
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 | 
