【发布时间】:2022-08-11 03:34:27
【问题描述】:
我是新手,在遵循 PDF 发票教程时遇到了一些问题。 第一次打印 PDF 一切正常,但是在添加/编辑一些数据后第二次尝试时,PDF 文件仍然是第一个 PDF,我得到了标题所示的错误。
未处理的异常:\'package:pdf/src/widgets/document.dart\':断言失败:第 117 行 pos 12:\'!_paint\':文档已保存。
以下是我的部分代码
onClicked: () async {
final date = DateTime.now();
final dueDate = date.add(Duration(days: 7));
final invoice = Invoice(
supplier: Supplier(
name: \'..\',
address: \'000\',
paymentInfo: \'**.com\',
),
info: InvoiceInfo(
date: date,
dueDate: dueDate,
description: data.texttobeinsert,
number: \'${DateTime.now().year}-9999\',
),
infoYourSignature: InvoiceInfo2(
date: date,
dueDate: dueDate,
description: data.texttobeinsert2,
number: \'${DateTime.now().year}-9999\',
),
items: [
InvoiceItem(
description:
AppLocalizations.of(context)!
.translate(\'net_monthly_incomedsr\')!,
unitPrice: AppLocalizations.of(context)!
.translate(\'currency\')! +
oCcy1.format(data.netmonthlyincome),
),
InvoiceItem(
description: AppLocalizations.of(context)!
.translate(\'other_income\')!,
// date: DateTime.now(),
// quantity: 8,
// vat: 0.19,
unitPrice: AppLocalizations.of(context)!
.translate(\'currency\')! +
oCcy1.format(data.otherincome),
),
InvoiceItem(
description: data.friendlist1.isEmpty
? \"[n/a]\"
: \"[\" +
data.friendlist1 +
\", \" +
data.friendlist2 +
\"]\",
unitPrice: \"\"),
InvoiceItem(
description:
AppLocalizations.of(context)!.translate(\'ndi\')!,
unitPrice: AppLocalizations.of(context)!
.translate(\'currency\')! +
oCcy1.format(data.ndi),
),
],
);
final pdfFile = await PdfInvoiceApiDsr.generate(invoice);
PdfApi.openFile(pdfFile);
},
),
PdfInvoiceApiDsr.dart(部分)
import \'../api/pdf_api.dart\';
import \'../model/customer.dart\';
import \'../model/invoice.dart\';
import \'../model/supplier.dart\';
import \'../utils.dart\';
import \'package:pdf/pdf.dart\';
import \'package:pdf/widgets.dart\' as pw;
import \'package:pdf/widgets.dart\';
int runonceforprinting = 1;
final pdf = pw.Document();
final imageA = PdfImage.file(
pdf.document,
bytes: File(\'assets/icon/icon2.png\').readAsBytesSync(),
);
var profileImage;
class PdfInvoiceApiDsr {
static Future<File> generate(Invoice invoice) async {
profileImage = pw.MemoryImage(
(await rootBundle.load(\'assets/icon/icon2.png\')).buffer.asUint8List(),
);
pdf.addPage( <----this error from here, it tells the error : the _paint has been saved!..
pw.MultiPage(
build: (context) => [
buildHeader(invoice),
SizedBox(height: 0.05 * PdfPageFormat.cm),
buildTitle(invoice),
buildInvoice(invoice),
],
footer: (context) => buildFooter(invoice),
),
);
……
PDFAPI
class PdfApi {
static Future<File> saveDocument({
required String name,
required Document pdf,
}) async {
final bytes = await pdf.save();
final dir = await getApplicationDocumentsDirectory();
final file = File(\'${dir.path}/$name\');
file.writeAsBytesSync(bytes);
return file;
}
static Future openFile(File file) async {
final url = file.path;
await OpenFile.open(url);
}
}
-
你设法解决了这个问题吗?我有完全相同的问题...