/// convert_excel_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_excel_options.dart'; import 'package:provider/provider.dart'; import '../../states/convert_options_provider.dart'; class ConvertExcelOptionsWidget extends StatefulWidget { const ConvertExcelOptionsWidget({Key? key}) : super(key: key); @override State createState() => _ConvertExcelOptionsWidgetState(); } class _ConvertExcelOptionsWidgetState extends State { @override Widget build(BuildContext context) { bool containImages = context.select( (value) => value.excelOptions.containImages); bool containAnnotations = context.select( (value) => value.excelOptions.containAnnotations); return SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(8), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text('ContainImages'), Switch( value: containImages, onChanged: (value) { context .read() .changeExcelOptions(containImages: value); }) ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text('ContainAnnotations'), Switch( value: containAnnotations, onChanged: (value) { context .read() .changeExcelOptions(containAnnotations: value); }) ], ), excelWorkSheetOptions((value) { context .read() .changeExcelOptions(workSheetOptions: value); }), excelContentOptions((value) { context .read() .changeExcelOptions(contentOptions: value); }) ], )), ); } Widget excelWorkSheetOptions(ValueChanged onChanged) { ExcelWorkSheetOptions workSheetOptions = context.select( (value) => value.excelOptions.workSheetOptions); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('WorkSheetOptions:'), _excelWorkSheetOptionsItem( workSheetOptions, ExcelWorkSheetOptions.forEachTable, onChanged), _excelWorkSheetOptionsItem( workSheetOptions, ExcelWorkSheetOptions.forEachPage, onChanged), _excelWorkSheetOptionsItem( workSheetOptions, ExcelWorkSheetOptions.forTheDocument, onChanged), ], ); } Widget _excelWorkSheetOptionsItem( ExcelWorkSheetOptions currentWorkSheetOptions, ExcelWorkSheetOptions options, ValueChanged onChanged) { return CheckboxListTile( controlAffinity: ListTileControlAffinity.leading, title: Text(options.name), value: currentWorkSheetOptions == options, onChanged: (value) { onChanged(options); }); } Widget excelContentOptions(ValueChanged onChanged) { ExcelContentOptions contentOptions = context.select( (value) => value.excelOptions.contentOptions); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text('ContentOptions:'), _excelContentOptionsItem( contentOptions, ExcelContentOptions.onlyText, onChanged), _excelContentOptionsItem( contentOptions, ExcelContentOptions.onlyTable, onChanged), _excelContentOptionsItem( contentOptions, ExcelContentOptions.allContent, onChanged), ], ); } Widget _excelContentOptionsItem( ExcelContentOptions currentOptions, ExcelContentOptions options, ValueChanged onChanged) { return CheckboxListTile( controlAffinity: ListTileControlAffinity.leading, title: Text(options.name), value: currentOptions == options, onChanged: (value) { onChanged(options); }); } }