12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import 'package:ConversionFlutterDemo/models/convert_contain_options_bean.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/services.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);
- })
- ],
- ),
- 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: 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: [
- 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);
- });
- }
- }
|