在颤振中创建 pdf

时间:2021-04-12 05:43:29

标签: 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/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),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

说实话,我不知道为什么。但在“file.writeAsBytesSync(pdf.save());”上添加等待修好了。

所以..

"file.writeAsBytesSync(pdf.save());""file.writeAsBytesSync(await pdf.save());"

帮我修好了。

感谢来自互联网上其他问答主题的 osama asif 的回答。