Flutter 在颤振中创建pdf
您好,我正在学习关于pdf创建的颤振教程。 我遵循了所有的步骤,在教程视频中它是有效的,但在我这方面它没有。我只是不明白为什么它对我这一方不起作用。我跟踪了我正在观看的视频的每一个细节。请向我解释我做错了什么,如果可以,如果可能,请纠正错误Flutter 在颤振中创建pdf,flutter,flutter-layout,flutter-dependencies,flutter-test,Flutter,Flutter Layout,Flutter Dependencies,Flutter Test,您好,我正在学习关于pdf创建的颤振教程。 我遵循了所有的步骤,在教程视频中它是有效的,但在我这方面它没有。我只是不明白为什么它对我这一方不起作用。我跟踪了我正在观看的视频的每一个细节。请向我解释我做错了什么,如果可以,如果可能,请纠正错误 import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:path_provider/
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),
),
);
}
}
导入'dart:io';
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“package:path_provider/path_provider.dart”;
输入‘package:pdf/pdf.dart’;
导入“package:pdf/widgets.dart”作为pw;
导入“包:ppmobile/installers/pdf/PDfPreview.dart”;
类MyAppforPDf扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:PdfTest(),
);
}
}
类PdfTest扩展了无状态小部件{
最终pdf=pw.Document();
writeOnPdf(){
pdf.addPage(
多页(
页面格式:PdfPageFormat.a4,
裕度:所有边缘集(32),
构建:(pw.Context){
返回[
压头(
级别:0,
子项:pw.Text(“第一个标题”),
),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.标题(级别:1,子级:pw.文本(“第二个eHeader”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
pw.段落(文本:“测试PDF”),
];
},
),
);
}
Future savePdf()异步{
Directory documentDirectory=等待getApplicationDocumentsDirectory();
字符串documentPath=documentDirectory.path;
File File=File(“$documentPath/example.pdf”);
file.writeAsBytesSync(pdf.save());PdfPreviewScreen(
路径:完整路径,
),
),
);
},
子:图标(Icons.save),
),
);
}
}
老实说,我不知道为什么。但是在“file.writeAsBytesSync(pdf.save());”上添加wait修复了它
所以
从“file.writeAsBytesSync(pdf.save());”
到“file.writeAsBytesSync(wait pdf.save());”
帮我修好了
感谢互联网上其他问答环节的osama asif给出的答案