12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import 'package:ConversionFlutterDemo/models/convert_bean.dart';
- import 'package:ConversionFlutterDemo/states/convert_provider.dart';
- import 'package:flutter/material.dart';
- import 'package:open_file/open_file.dart';
- import 'package:provider/provider.dart';
- class ConvertListWidget extends StatefulWidget {
- const ConvertListWidget({Key? key}) : super(key: key);
- @override
- State<ConvertListWidget> createState() => _ConvertListWidgetState();
- }
- class _ConvertListWidgetState extends State<ConvertListWidget> {
- @override
- Widget build(BuildContext context) {
- var count =
- context.select<ConvertProvider, int>((value) => value.items.length);
- return ListView.builder(
- itemCount: count,
- primary: true,
- shrinkWrap: true,
- physics: new ClampingScrollPhysics(),
- itemBuilder: (BuildContext context, int index) {
- //设置子条目
- return Builder(builder: (context) {
- ConvertBean bean = context.select<ConvertProvider, ConvertBean>(
- (value) => value.items[index]);
- context.select<ConvertProvider, int>(
- (value) => value.items[index].progress);
- int status = context.select<ConvertProvider, int>(
- (value) => value.items[index].status);
- return Column(
- children: [
- ListTile(
- isThreeLine: true,
- title: Text(
- bean.fileName,
- style: const TextStyle(fontSize: 18),
- ),
- subtitle: Text(
- "PDF转${bean.convertType.toUpperCase()} ${bean.outputPath != null ? "\n${bean.outputPath}" : ''}",
- style: const TextStyle(fontSize: 12),
- ),
- trailing: Text(bean.getStatusName()),
- // item 直观感受是整体大小
- contentPadding:
- const EdgeInsets.symmetric(horizontal: 12, vertical: 2),
- onTap: () {
- if (status == convertSuccess) {
- OpenFile.open(bean.outputPath);
- }
- },
- ),
- ],
- );
- });
- },
- );
- }
- }
|