/// convert_html_options_widget.dart
///
/// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
///
/// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
/// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
/// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
/// This notice may not be removed from this file.
import 'package:flutter/material.dart';
import 'package:kmpdfkit_conversion_flutter/models/options/convert_html_options.dart';
import 'package:provider/provider.dart';
import '../../states/convert_options_provider.dart';
class ConvertHtmlOptionsWidget extends StatefulWidget {
const ConvertHtmlOptionsWidget({Key? key}) : super(key: key);
@override
State createState() =>
_ConvertHtmlOptionsWidgetState();
}
class _ConvertHtmlOptionsWidgetState extends State {
@override
Widget build(BuildContext context) {
bool containImages = context.select(
(value) => value.htmlOptions.containImages);
bool containAnnotations = context.select(
(value) => value.htmlOptions.containAnnotations);
return Padding(
padding: const EdgeInsets.all(8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text('ContainImages'),
Switch(
value: containImages,
onChanged: (value) {
context
.read()
.changeHtmlOptions(containImages: value);
})
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text('ContainAnnotations'),
Switch(
value: containAnnotations,
onChanged: (value) {
context
.read()
.changeHtmlOptions(containAnnotations: value);
})
],
),
htmlPageOptionsItem((value) {
context
.read()
.changeHtmlOptions(htmlPageOptions: value);
}),
],
));
}
Widget htmlPageOptionsItem(ValueChanged onChanged) {
HtmlPageOptions contentOptions =
context.select(
(value) => value.htmlOptions.htmlPageOptions);
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('Page Options:'),
_htmlPageOptionsItem(
contentOptions, HtmlPageOptions.singlePage, onChanged),
_htmlPageOptionsItem(contentOptions,
HtmlPageOptions.singlePageNavigationByBookmark, onChanged),
_htmlPageOptionsItem(
contentOptions, HtmlPageOptions.multiplePages, onChanged),
_htmlPageOptionsItem(contentOptions,
HtmlPageOptions.multiplePagesSplitByBookmarks, onChanged),
],
);
}
Widget _htmlPageOptionsItem(HtmlPageOptions currentOptions,
HtmlPageOptions options, ValueChanged onChanged) {
return CheckboxListTile(
controlAffinity: ListTileControlAffinity.leading,
title: Text(options.name),
value: currentOptions == options,
onChanged: (value) {
onChanged(options);
});
}
}