在 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
教程
我想显示我从 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
教程