annot_attribute_options_widget.dart 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import 'package:flutter/material.dart';
  2. import 'package:kmpdfkit_demo/widgets/constains.dart';
  3. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_free_text_widget.dart';
  4. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_signature_list_widget.dart';
  5. import 'package:kmpdfkit_demo/widgets/function/attrwidget/base_slider_widget.dart';
  6. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_color_list_widget.dart';
  7. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_ink_pen_wave_widget.dart';
  8. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_ink_line_width_widget.dart';
  9. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_shape_type_widget.dart';
  10. import 'package:kmpdfkit_demo/widgets/models/annot_attribute_bean.dart';
  11. import 'package:kmpdfkit_demo/widgets/models/annot_bean.dart';
  12. /// annot_attribute_options_widget.dart
  13. ///
  14. /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  15. ///
  16. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  17. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  18. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  19. /// This notice may not be removed from this file.
  20. typedef AnnotAttributeOptionsCallback = void Function(AnnotAttributeBean);
  21. class AnnotAttributeOptionsWidget extends StatefulWidget {
  22. AnnotBean annotBean;
  23. final AnnotAttributeOptionsCallback attributeOptionsCallback;
  24. AnnotAttributeOptionsWidget(
  25. {Key? key,
  26. required this.annotBean,
  27. required this.attributeOptionsCallback})
  28. : super(key: key);
  29. @override
  30. State<AnnotAttributeOptionsWidget> createState() =>
  31. _AnnotAttributeOptionsWidgetState();
  32. }
  33. class _AnnotAttributeOptionsWidgetState
  34. extends State<AnnotAttributeOptionsWidget> {
  35. @override
  36. void initState() {
  37. super.initState();
  38. }
  39. @override
  40. Widget build(BuildContext context) {
  41. return annotationAttrWidget();
  42. }
  43. Widget annotationAttrWidget() {
  44. switch (widget.annotBean.annotType) {
  45. case AnnotationType.highlight:
  46. case AnnotationType.underline:
  47. case AnnotationType.squiggly:
  48. case AnnotationType.strikeout:
  49. {
  50. return Column(
  51. mainAxisSize: MainAxisSize.min,
  52. children: [_colorWidget(), _colorAlphaWidget()]);
  53. }
  54. case AnnotationType.ink:
  55. {
  56. return Column(mainAxisSize: MainAxisSize.min, children: [
  57. InkCurvedWidget(
  58. color: widget.annotBean.attributeBean.color,
  59. lineWidth: widget.annotBean.attributeBean.borderWidth,
  60. alpha: widget.annotBean.attributeBean.alpha,
  61. ),
  62. _colorWidget(),
  63. _colorAlphaWidget(),
  64. _inkPenSwitchWidget()
  65. ]);
  66. }
  67. case AnnotationType.shape:
  68. {
  69. return Column(mainAxisSize: MainAxisSize.min, children: [
  70. ShapeAttrWidget(
  71. bean: widget.annotBean.attributeBean,
  72. callback: (AnnotAttributeBean? bean) {
  73. if (bean != null) {
  74. widget.annotBean.attributeBean = bean;
  75. }
  76. widget.attributeOptionsCallback(widget.annotBean.attributeBean);
  77. },
  78. )
  79. ]);
  80. }
  81. case AnnotationType.freetext:
  82. {
  83. return Column(mainAxisSize: MainAxisSize.min, children: [
  84. AttrFreeTextWidget(
  85. bean: widget.annotBean.attributeBean,
  86. callback: widget.attributeOptionsCallback,
  87. )
  88. ]);
  89. }
  90. case AnnotationType.signature:
  91. {
  92. return AttrSignatureListWidget(
  93. callback: (imagePath) {
  94. widget.annotBean.attributeBean
  95. ..imagePath = imagePath
  96. ..isSignature = true;
  97. widget.attributeOptionsCallback(widget.annotBean.attributeBean);
  98. Navigator.pop(context);
  99. },
  100. );
  101. }
  102. default:
  103. return const Placeholder();
  104. }
  105. }
  106. Widget _colorWidget() {
  107. return ColorListWidget(
  108. color: widget.annotBean.attributeBean.color,
  109. colorOptionsCallback: (color) {
  110. setState(() {
  111. widget.annotBean.attributeBean.color = color;
  112. });
  113. widget.attributeOptionsCallback(widget.annotBean.attributeBean);
  114. });
  115. }
  116. Widget _colorAlphaWidget() {
  117. return colorAlphaWidget(
  118. currentAlphaValue: widget.annotBean.attributeBean.alpha,
  119. alphaOptionsCallback: (value) {
  120. setState(() {
  121. widget.annotBean.attributeBean.alpha = value.round();
  122. });
  123. widget.attributeOptionsCallback(widget.annotBean.attributeBean);
  124. });
  125. }
  126. Widget _inkPenSwitchWidget() {
  127. return InkPenLineWidthWidget(
  128. borderWidth: widget.annotBean.attributeBean.borderWidth,
  129. inkBorderWidthCallback: (borderWidth) {
  130. setState(() {
  131. widget.annotBean.attributeBean.borderWidth = borderWidth;
  132. widget.attributeOptionsCallback(widget.annotBean.attributeBean);
  133. });
  134. });
  135. }
  136. }