convert_list_widget.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:ConversionFlutterDemo/models/convert_bean.dart';
  2. import 'package:ConversionFlutterDemo/states/convert_provider.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:open_filex/open_filex.dart';
  5. // import 'package:open_file/open_file.dart';
  6. import 'package:provider/provider.dart';
  7. /// convert_list_widget.dart
  8. /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  9. ///
  10. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  11. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  12. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  13. /// This notice may not be removed from this file.
  14. class ConvertListWidget extends StatefulWidget {
  15. const ConvertListWidget({Key? key}) : super(key: key);
  16. @override
  17. State<ConvertListWidget> createState() => _ConvertListWidgetState();
  18. }
  19. class _ConvertListWidgetState extends State<ConvertListWidget> {
  20. @override
  21. Widget build(BuildContext context) {
  22. var count =
  23. context.select<ConvertProvider, int>((value) => value.items.length);
  24. return ListView.builder(
  25. itemCount: count,
  26. primary: true,
  27. shrinkWrap: true,
  28. physics: new ClampingScrollPhysics(),
  29. itemBuilder: (BuildContext context, int index) {
  30. //设置子条目
  31. return Builder(builder: (context) {
  32. ConvertBean bean = context.select<ConvertProvider, ConvertBean>(
  33. (value) => value.items[index]);
  34. context.select<ConvertProvider, int>(
  35. (value) => value.items[index].progress);
  36. int status = context.select<ConvertProvider, int>(
  37. (value) => value.items[index].status);
  38. return Column(
  39. children: [
  40. ListTile(
  41. isThreeLine: true,
  42. title: Text(
  43. bean.fileName,
  44. style: const TextStyle(fontSize: 18),
  45. ),
  46. subtitle: Text(
  47. "PDF转${bean.convertType.toUpperCase()} ${bean.outputPath != null ? "\n${bean.outputPath}" : ''}",
  48. style: const TextStyle(fontSize: 12),
  49. ),
  50. trailing: Text(bean.getStatusName()),
  51. // item 直观感受是整体大小
  52. contentPadding:
  53. const EdgeInsets.symmetric(horizontal: 12, vertical: 2),
  54. onTap: () {
  55. if (status == convertSuccess) {
  56. OpenFilex.open(bean.outputPath);
  57. }
  58. },
  59. ),
  60. ],
  61. );
  62. });
  63. },
  64. );
  65. }
  66. }