在 flutter 中与 api 分开显示 pdf 和图像列表

display list of pdf and image separately from api in flutter

我想显示我从 API 获得的图像和 pdf 文件的列表作为响应,将它们分成 PFD 和图像。 我已经使用 image.network 在 circleAvatar 中成功显示了从 API 获得的图像列表,但现在我不知道如何显示 pdf 列表,以便当我点击一个 pdf 时在查看器中打开。 下面是我想如何在列表中显示它的图像-:

第一个蓝色圆圈是空的,因为它有一个 pdf 路径,下一个有一个图像。

显示图片和pdf文件的代码-

GridView.count(
                                                crossAxisCount: 3,
                                                children: List.generate(document?.length, (ind) {
                                                  return
                                                        Padding(
                                                          padding: const EdgeInsets.all(8.0),
                                                          child: CircleAvatar(
                                                            radius: 80,
                                                            backgroundImage:
                                                            NetworkImage('${api.getHTTPUri('/${document[ind].documentPath}')}'),
                                                          ),
                                                        ),
                                                }),
                                              ),

您可以使用 pub.dev 中的以下软件包:flutter_pdfview

PDFView(
  filePath: path,
  enableSwipe: true,
  swipeHorizontal: true,
  autoSpacing: false,
  pageFling: false,
  onRender: (_pages) {
    setState(() {
      pages = _pages;
      isReady = true;
    });
  },
  onError: (error) {
    print(error.toString());
  },
  onPageError: (page, error) {
    print('$page: ${error.toString()}');
  },
  onViewCreated: (PDFViewController pdfViewController) {
    _controller.complete(pdfViewController);
  },
  onPageChanged: (int page, int total) {
    print('page change: $page/$total');
  },
),

link.

对于列表,

       ListView.builder(
                                itemCount: length, //pass the length of list
                                itemBuilder: (context, index) {
                                  return GestureDetector(
                                    onTap: () {
                                        //code for opening pdf goes here
                                    },
                                    child: Container(
                                      color: Colors.grey.shade200,
                                      margin: EdgeInsets.symmetric(
                                          horizontal: 4, vertical: 8),
                                      child: Row(children:[
                                        //code of circle avatar
                                       Text("//name of pdf at this index")])
                                    ),
                                  );
                                },
                              ),

link listview.builder

教程