嗨,我正在学习有关 pdf 创建的颤振教程。 我遵循了所有步骤,并且在教程视频中它正在运行,但在我看来它没有。我为什么它不工作我最终只是失去了。我关注了我正在观看的视频的每一个细节。请向我解释我做错了什么,如果可以,如果可能的话修复错误
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:ppmobile/installers/pdf/PDfPreview.dart';
class MyAppforPDf extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: PdfTest(),
);
}
}
class PdfTest extends StatelessWidget {
final pdf = pw.Document();
writeOnPdf() {
pdf.addPage(
pw.MultiPage(
pageFormat: PdfPageFormat.a4,
margin: pw.EdgeInsets.all(32),
build: (pw.Context context) {
return <pw.Widget>[
pw.Header(
level: 0,
child: pw.Text("1st header"),
),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Header(level: 1, child: pw.Text("2nd ehader")),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
pw.Paragraph(text: "TEST PDF"),
];
},
),
);
}
Future savePdf() async {
Directory documentDirectory = await getApplicationDocumentsDirectory();
String documentPath = documentDirectory.path;
File file = File("$documentPath/example.pdf");
file.writeAsBytesSync(pdf.save()); <------------------------------- this is the one that has problem
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
width: double.infinity,
height: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"PDF TUTORIAL",
style: TextStyle(fontSize: 34),
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () async {
writeOnPdf();
await savePdf();
Directory documentDirectory =
await getApplicationDocumentsDirectory();
String documentPath = documentDirectory.path;
String fullPath = "$documentPath/example.pdf";
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PdfPreviewScreen(
path: fullPath,
),
),
);
},
child: Icon(Icons.save),
),
);
}
}
答案 0 :(得分:0)
说实话,我不知道为什么。但在“file.writeAsBytesSync(pdf.save());”上添加等待修好了。
所以..
从"file.writeAsBytesSync(pdf.save());"
到"file.writeAsBytesSync(await pdf.save());"
帮我修好了。
感谢来自互联网上其他问答主题的 osama asif 的回答。