dart_pdf 图像生成不正确以及如何在使用图像生成多页时使用异步功能

dart_pdf Image is not generated properly and how to use async function while generating multipage with image

图片未正确加载损坏的图片

   PdfImage image = new PdfImage.file(
                doc.document,
                bytes: (File(field.imagename).readAsBytesSync()),
              );

如何将 await getContentlist 函数用作异步。下面的函数调用

doc.addPage(
       pw.MultiPage(
        maxPages: 100,
        pageTheme: _buildTheme(
          pageFormat,
          
        ),
        header: _buildheader2,
        footer: _buildfooter2,
        build:  (pw.Context context)  => getContentlist(context),
      ),
    );

这是函数

List<pw.Widget> getContentlist(context) {
      List<pw.Widget> contentlist = [];
      contentlist.add(pw.SizedBox(height: 20));

      contentlist.add(_contentheader2(context));                                                    
      return contentlist;
    }

我认为你需要问 2 个不同的问题

对于第二部分,如果 build 与 Flutter 小部件 build() 方法无关,您可以修改您的代码片段以使其异步

build:  (pw.Context context) async  => getContentlist(context),

但如果它与小部件构建有关 - 您需要使用 FutureBuilder 小部件等待未来状态更改并重建小部件

      FutureBuilder<String>(
        future: _yourFuture, 
        builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
          List<Widget> children;
          if (snapshot.hasData) {
            // return widget that shows data
          } else if (snapshot.hasError) {
            // return widget that shows  erro
          } 
          // by default show progress indication
          return Center(
            child: CircularProgressIndicator()
          );
        },
      ),

PS随时在评论中联系我