/// convert_list_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/task_status.dart'; import 'package:open_file/open_file.dart'; import 'package:provider/provider.dart'; import '../models/convert_task.dart'; import '../states/convert_task_queue_provider.dart'; class ConvertListWidget extends StatefulWidget { const ConvertListWidget({Key? key}) : super(key: key); @override State createState() => _ConvertListWidgetState(); } class _ConvertListWidgetState extends State { @override Widget build(BuildContext context) { var count = context.select( (value) => value.taskQueue.length); return ListView.builder( itemCount: count, primary: true, shrinkWrap: true, physics: const ClampingScrollPhysics(), itemBuilder: (BuildContext context, int index) { return Builder(builder: (context) { ConvertTask bean = context.select( (value) => value.taskQueue[index]); context.select( (value) => value.taskQueue[index].progress); TaskStatus status = context.select( (value) => value.taskQueue[index].status); return Column( children: [ ListTile( isThreeLine: true, title: Text( bean.fileName, style: const TextStyle(fontSize: 18), ), subtitle: Text( "PDF convert ${bean.convertType.name.toUpperCase()} ${bean.outputPath != null ? "\n${bean.outputPath}" : ''}", style: const TextStyle(fontSize: 12), ), trailing: Text(getStatusName(bean)), contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 2), onTap: () async { if (status == TaskStatus.success) { OpenFile.open(bean.outputPath); } }, ) ], ); }); }, ); } String getStatusName(ConvertTask task) { switch (task.status) { case TaskStatus.wait: return "Waiting"; case TaskStatus.start: return "Start"; case TaskStatus.converting: return "Converting (${task.progress}%)"; case TaskStatus.success: return "SUCCESS"; case TaskStatus.fail: return "FAIL"; case TaskStatus.cancel: return "task canceled"; default: return ""; } } }