marco.pms.mobileapp/lib/helpers/widgets/Directory/comment_editor_card.dart

121 lines
3.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_quill/flutter_quill.dart' as quill;
import 'package:get/get.dart';
class CommentEditorCard extends StatelessWidget {
final quill.QuillController controller;
final VoidCallback onCancel;
final Future<void> Function(quill.QuillController controller) onSave;
const CommentEditorCard({
super.key,
required this.controller,
required this.onCancel,
required this.onSave,
});
@override
Widget build(BuildContext context) {
final RxBool _showFullToolbar = false.obs;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Obx(() {
final showFull = _showFullToolbar.value;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
quill.QuillSimpleToolbar(
controller: controller,
configurations: quill.QuillSimpleToolbarConfigurations(
showBoldButton: true,
showItalicButton: true,
showUnderLineButton: showFull,
showListBullets: true,
showListNumbers: true,
showAlignmentButtons: showFull,
showLink: true,
showFontSize: showFull,
showFontFamily: showFull,
showColorButton: showFull,
showBackgroundColorButton: showFull,
showUndo: false,
showRedo: false,
showCodeBlock: showFull,
showQuote: showFull,
showSuperscript: false,
showSubscript: false,
showInlineCode: false,
showDirection: false,
showListCheck: false,
showStrikeThrough: false,
showClearFormat: showFull,
showDividers: false,
showHeaderStyle: showFull,
multiRowsDisplay: false,
),
),
Align(
alignment: Alignment.centerRight,
child: TextButton(
onPressed: () => _showFullToolbar.toggle(),
child: Text(
showFull ? "Hide Formatting" : "More Formatting",
style: const TextStyle(color: Colors.indigo),
),
),
)
],
);
}),
const SizedBox(height: 8),
Container(
height: 120,
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey.shade300),
borderRadius: BorderRadius.circular(8),
color: const Color(0xFFFDFDFD),
),
child: quill.QuillEditor.basic(
controller: controller,
configurations: const quill.QuillEditorConfigurations(
autoFocus: true,
expands: false,
scrollable: true,
),
),
),
const SizedBox(height: 8),
Align(
alignment: Alignment.centerRight,
child: Wrap(
spacing: 8,
children: [
OutlinedButton.icon(
onPressed: onCancel,
icon: const Icon(Icons.close, size: 18),
label: const Text("Cancel"),
style: OutlinedButton.styleFrom(
foregroundColor: Colors.grey[700],
),
),
ElevatedButton.icon(
onPressed: () => onSave(controller),
icon: const Icon(Icons.save, size: 18),
label: const Text("Save"),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.indigo,
foregroundColor: Colors.white,
),
),
],
),
)
],
);
}
}