首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在颤振错误中创建pdf :失败的断言:第117行pos 12:‘!_画图’:文档已经保存

在颤振错误中创建pdf :失败的断言:第117行pos 12:‘!_画图’:文档已经保存
EN

Stack Overflow用户
提问于 2022-07-01 05:05:51
回答 1查看 322关注 0票数 1

我是新的颤振和面对一些问题时,遵循PDF发票教程。对于第一次打印PDF,一切都很好,但是对于第二次尝试,在添加/编辑一些数据之后,PDF文件仍然是第一个PDF,并且我得到了标题上的错误。

未处理的异常:‘package:pdf/src/widget/document.dart’:失败的断言:第117行pos 12:‘!_画图’:文档已经保存。

下面是我代码的一部分

代码语言:javascript
运行
复制
  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 (部分)

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2022-08-10 19:34:27

我也遇到了同样的问题,但我这样解决了它--尝试在您的方法final pdf = pw.Document()中添加generate(Invoice invoid),所以当您离开页面时,您的pdf文件也将被删除,并且您总是创建一个新的pdf文件。

因此:

代码语言:javascript
运行
复制
class PdfInvoiceApiDsr {
  static Future<File> generate(Invoice invoice) async {
   profileImage = pw.MemoryImage(
    (await rootBundle.load('assets/icon/icon2.png')).buffer.asUint8List(),
   );
   final pdf = pw.Document()


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),
  ),
);`
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72824582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档