convert_html_options_widget.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /// convert_html_options_widget.dart
  2. ///
  3. /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  4. ///
  5. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  6. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  7. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  8. /// This notice may not be removed from this file.
  9. import 'package:flutter/material.dart';
  10. import 'package:kmpdfkit_conversion_flutter/models/options/convert_html_options.dart';
  11. import 'package:provider/provider.dart';
  12. import '../../states/convert_options_provider.dart';
  13. class ConvertHtmlOptionsWidget extends StatefulWidget {
  14. const ConvertHtmlOptionsWidget({Key? key}) : super(key: key);
  15. @override
  16. State<ConvertHtmlOptionsWidget> createState() =>
  17. _ConvertHtmlOptionsWidgetState();
  18. }
  19. class _ConvertHtmlOptionsWidgetState extends State<ConvertHtmlOptionsWidget> {
  20. @override
  21. Widget build(BuildContext context) {
  22. bool containImages = context.select<ConvertOptionsProvider, bool>(
  23. (value) => value.htmlOptions.containImages);
  24. bool containAnnotations = context.select<ConvertOptionsProvider, bool>(
  25. (value) => value.htmlOptions.containAnnotations);
  26. return Padding(
  27. padding: const EdgeInsets.all(8),
  28. child: Column(
  29. mainAxisSize: MainAxisSize.min,
  30. children: [
  31. Row(
  32. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  33. children: [
  34. const Text('ContainImages'),
  35. Switch(
  36. value: containImages,
  37. onChanged: (value) {
  38. context
  39. .read<ConvertOptionsProvider>()
  40. .changeHtmlOptions(containImages: value);
  41. })
  42. ],
  43. ),
  44. Row(
  45. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  46. children: [
  47. const Text('ContainAnnotations'),
  48. Switch(
  49. value: containAnnotations,
  50. onChanged: (value) {
  51. context
  52. .read<ConvertOptionsProvider>()
  53. .changeHtmlOptions(containAnnotations: value);
  54. })
  55. ],
  56. ),
  57. htmlPageOptionsItem((value) {
  58. context
  59. .read<ConvertOptionsProvider>()
  60. .changeHtmlOptions(htmlPageOptions: value);
  61. }),
  62. ],
  63. ));
  64. }
  65. Widget htmlPageOptionsItem(ValueChanged<HtmlPageOptions> onChanged) {
  66. HtmlPageOptions contentOptions =
  67. context.select<ConvertOptionsProvider, HtmlPageOptions>(
  68. (value) => value.htmlOptions.htmlPageOptions);
  69. return Column(
  70. crossAxisAlignment: CrossAxisAlignment.start,
  71. children: [
  72. const Text('Page Options:'),
  73. _htmlPageOptionsItem(
  74. contentOptions, HtmlPageOptions.singlePage, onChanged),
  75. _htmlPageOptionsItem(contentOptions,
  76. HtmlPageOptions.singlePageNavigationByBookmark, onChanged),
  77. _htmlPageOptionsItem(
  78. contentOptions, HtmlPageOptions.multiplePages, onChanged),
  79. _htmlPageOptionsItem(contentOptions,
  80. HtmlPageOptions.multiplePagesSplitByBookmarks, onChanged),
  81. ],
  82. );
  83. }
  84. Widget _htmlPageOptionsItem(HtmlPageOptions currentOptions,
  85. HtmlPageOptions options, ValueChanged<HtmlPageOptions> onChanged) {
  86. return CheckboxListTile(
  87. controlAffinity: ListTileControlAffinity.leading,
  88. title: Text(options.name),
  89. value: currentOptions == options,
  90. onChanged: (value) {
  91. onChanged(options);
  92. });
  93. }
  94. }