123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /// convert_image_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:flutter/services.dart';
- import 'package:kmpdfkit_conversion_flutter/models/options/convert_image_options.dart';
- import 'package:provider/provider.dart';
- import '../../states/convert_options_provider.dart';
- class ConvertImageOptionsWidget extends StatefulWidget {
- const ConvertImageOptionsWidget({Key? key}) : super(key: key);
- @override
- State<ConvertImageOptionsWidget> createState() =>
- _ConvertImageOptionsWidgetState();
- }
- class _ConvertImageOptionsWidgetState extends State<ConvertImageOptionsWidget> {
- @override
- Widget build(BuildContext context) {
- bool containAnnotations = context.select<ConvertOptionsProvider, bool>(
- (value) => value.imageOptions.containAnnotations);
- return Padding(
- padding: EdgeInsets.all(8),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- const Text('ContainAnnotations'),
- Switch(
- value: containAnnotations,
- onChanged: (value) {
- context
- .read<ConvertOptionsProvider>()
- .changeImageOptions(containAnnotations: value);
- })
- ],
- ),
- const Text('ImageDpi:'),
- TextFormField(
- keyboardType: TextInputType.number,
- textInputAction: TextInputAction.done,
- initialValue: "300",
- maxLength: 1000,
- inputFormatters:
- [
- FilteringTextInputFormatter.allow(RegExp(r'^\d{1,4}(\.\d{0,2})?')),
- FilteringTextInputFormatter.deny(RegExp(r'[\\,|\\.]')),
- LengthLimitingTextInputFormatter(4)
- ],
- decoration: const InputDecoration(labelText: '请输入范围在1~1000内的整数'),
- onChanged: (value){
- context
- .read<ConvertOptionsProvider>()
- .changeImageOptions(imageDpi: int.parse(value));
- },
- ),
- imagePageOptions((value) {
- context
- .read<ConvertOptionsProvider>()
- .changeImageOptions(imagePageOptions: value);
- })
- ],
- ),
- );
- }
- Widget imagePageOptions(ValueChanged<ImagePageOptions> onChanged) {
- ImagePageOptions imagePageOptions =
- context.select<ConvertOptionsProvider, ImagePageOptions>(
- (value) => value.imageOptions.imagePageOptions);
- return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- const Text('Page Options:'),
- _imagePageOptionsItem(
- imagePageOptions, ImagePageOptions.jpeg, onChanged),
- _imagePageOptionsItem(
- imagePageOptions, ImagePageOptions.png, onChanged),
- ],
- );
- }
- Widget _imagePageOptionsItem(ImagePageOptions currentOptions,
- ImagePageOptions options, ValueChanged<ImagePageOptions> onChanged) {
- return CheckboxListTile(
- controlAffinity: ListTileControlAffinity.leading,
- title: Text(options.name),
- value: currentOptions == options,
- onChanged: (value) {
- onChanged(options);
- });
- }
- }
|