我正在制作一個關于克里特島的旅行應用程式,人們可以在其中查找最重要的東西。他們還可以將檔案添加到自己的旅行中,這是firestore“Selected”上的集合。
我希望人們能夠從他們選擇的專案中生成 pdf,以保存在他們的 Android/Iphone 上。
我有一個單獨的類來生成 pdf .. 但是我如何將 snapshot.data() 傳遞給另一個類?
onTap: () async {
getSelectedItems();
final pdfFile = await PdfApi.generateCenteredText(data);
PdfApi.openFile(pdfFile);
},
getSelectedItems(){
mySelectedTrips.get().then((querySnapshot) {
querySnapshot.docs.forEach((snapshot) {
setState(() {
data = snapshot.data();
uid = snapshot['uid'];
description = snapshot['description'];
image = snapshot['image'];
});
});
});
}
uj5u.com熱心網友回復:
嗨,這是一個簡短的示例,如何創建一頁的 pdf。
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart';
class PdfCreator {
void createPdf(Snapshot snapshot) async {
final Document pdf = Document();
final page = Page(
pageFormat: PdfPageFormat.a4,
build: (Context context) {
return Column(
children: [
Text(snapshot.snapshot['description']),
Text(snapshot.snapshot['uid'].toString()),
Image(MemoryImage(snapshot['image'])),
],
);
},
);
pdf.addPage(page);
// Save file
final output = await getTemporaryDirectory();
var path = "${output.path}/test.pdf";
final file = File(path);
await file.writeAsBytes(await pdf.save());
}
}
您可以增強它并在 foreach 回圈中為每個元素創建一頁,并將其添加到 pdf 等。
提示:如果您想在一個檔案中使用顫振小部件和 pdf 小部件,您可以將 pdf 作為 p 匯入,例如:
import 'package:pdf/widgets.dart' as p;
...
final flutterWidget = Text('abc');
final pdfWidget = p.Text('def');
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466963.html
下一篇:如何查找和更新檔案陣列中的物件
