convert_excel_options_widget.dart 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /// convert_excel_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_excel_options.dart';
  11. import 'package:provider/provider.dart';
  12. import '../../states/convert_options_provider.dart';
  13. class ConvertExcelOptionsWidget extends StatefulWidget {
  14. const ConvertExcelOptionsWidget({Key? key}) : super(key: key);
  15. @override
  16. State<ConvertExcelOptionsWidget> createState() =>
  17. _ConvertExcelOptionsWidgetState();
  18. }
  19. class _ConvertExcelOptionsWidgetState extends State<ConvertExcelOptionsWidget> {
  20. @override
  21. Widget build(BuildContext context) {
  22. bool containImages = context.select<ConvertOptionsProvider, bool>(
  23. (value) => value.excelOptions.containImages);
  24. bool containAnnotations = context.select<ConvertOptionsProvider, bool>(
  25. (value) => value.excelOptions.containAnnotations);
  26. return SingleChildScrollView(
  27. child: Padding(
  28. padding: const EdgeInsets.all(8),
  29. child: Column(
  30. crossAxisAlignment: CrossAxisAlignment.start,
  31. children: [
  32. Row(
  33. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  34. children: [
  35. const Text('ContainImages'),
  36. Switch(
  37. value: containImages,
  38. onChanged: (value) {
  39. context
  40. .read<ConvertOptionsProvider>()
  41. .changeExcelOptions(containImages: value);
  42. })
  43. ],
  44. ),
  45. Row(
  46. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  47. children: [
  48. const Text('ContainAnnotations'),
  49. Switch(
  50. value: containAnnotations,
  51. onChanged: (value) {
  52. context
  53. .read<ConvertOptionsProvider>()
  54. .changeExcelOptions(containAnnotations: value);
  55. })
  56. ],
  57. ),
  58. excelWorkSheetOptions((value) {
  59. context
  60. .read<ConvertOptionsProvider>()
  61. .changeExcelOptions(workSheetOptions: value);
  62. }),
  63. excelContentOptions((value) {
  64. context
  65. .read<ConvertOptionsProvider>()
  66. .changeExcelOptions(contentOptions: value);
  67. })
  68. ],
  69. )),
  70. );
  71. }
  72. Widget excelWorkSheetOptions(ValueChanged<ExcelWorkSheetOptions> onChanged) {
  73. ExcelWorkSheetOptions workSheetOptions =
  74. context.select<ConvertOptionsProvider, ExcelWorkSheetOptions>(
  75. (value) => value.excelOptions.workSheetOptions);
  76. return Column(
  77. crossAxisAlignment: CrossAxisAlignment.start,
  78. children: [
  79. Text('WorkSheetOptions:'),
  80. _excelWorkSheetOptionsItem(
  81. workSheetOptions, ExcelWorkSheetOptions.forEachTable, onChanged),
  82. _excelWorkSheetOptionsItem(
  83. workSheetOptions, ExcelWorkSheetOptions.forEachPage, onChanged),
  84. _excelWorkSheetOptionsItem(
  85. workSheetOptions, ExcelWorkSheetOptions.forTheDocument, onChanged),
  86. ],
  87. );
  88. }
  89. Widget _excelWorkSheetOptionsItem(
  90. ExcelWorkSheetOptions currentWorkSheetOptions,
  91. ExcelWorkSheetOptions options,
  92. ValueChanged<ExcelWorkSheetOptions> onChanged) {
  93. return CheckboxListTile(
  94. controlAffinity: ListTileControlAffinity.leading,
  95. title: Text(options.name),
  96. value: currentWorkSheetOptions == options,
  97. onChanged: (value) {
  98. onChanged(options);
  99. });
  100. }
  101. Widget excelContentOptions(ValueChanged<ExcelContentOptions> onChanged) {
  102. ExcelContentOptions contentOptions =
  103. context.select<ConvertOptionsProvider, ExcelContentOptions>(
  104. (value) => value.excelOptions.contentOptions);
  105. return Column(
  106. crossAxisAlignment: CrossAxisAlignment.start,
  107. children: [
  108. const Text('ContentOptions:'),
  109. _excelContentOptionsItem(
  110. contentOptions, ExcelContentOptions.onlyText, onChanged),
  111. _excelContentOptionsItem(
  112. contentOptions, ExcelContentOptions.onlyTable, onChanged),
  113. _excelContentOptionsItem(
  114. contentOptions, ExcelContentOptions.allContent, onChanged),
  115. ],
  116. );
  117. }
  118. Widget _excelContentOptionsItem(
  119. ExcelContentOptions currentOptions,
  120. ExcelContentOptions options,
  121. ValueChanged<ExcelContentOptions> onChanged) {
  122. return CheckboxListTile(
  123. controlAffinity: ListTileControlAffinity.leading,
  124. title: Text(options.name),
  125. value: currentOptions == options,
  126. onChanged: (value) {
  127. onChanged(options);
  128. });
  129. }
  130. }