android - 在 Flutter 中打开此屏幕时如何使用此库显示 PDF
问题描述
我有一个 pdf_screen.dart 文件,打开时会直接显示 PDF,有人可以解释我如何使用这个名为 flutter pdf viewer 的库的功能来显示我的 pdf 吗?
class _PdfScreenState extends State<PdfScreen> {
final DocumentSnapshot document;
String path;
var dir;
_PdfScreenState(this.document);
@override
void initState() {
super.initState();
getPdf();
}
Future<void> getPdf() async {
try {
dir = await getApplicationDocumentsDirectory();
setState(() {
path = "${dir.path}/${document["title"]}.pdf";
});
} catch (e) {
print(e);
}
}
@override
Widget build(BuildContext context) {
if (path == null) {
print("loading");
return Container(
color: Colors.white,
child: Center(
child: CircularProgressIndicator(backgroundColor: Colors.blueAccent,
),
),
);
} else {
return Container(
child: ??; // I need to show my PDF here, I need to pass the path
// variable but PdfViewer is a function and it doesn't
// return a widget, how to implement?
}
}
}
解决方案
正如自述文件所说,这个库启动了一个新的意图,因此它会替换堆栈中的 Flutter 应用程序,直到您使用后退按钮。这个例子很清楚如何实现这一点。
然而,随着自述文件的继续,一个概念验证可用,允许您在 Flutter 应用程序中呈现 PDF。查看来自 github 的分支以探索更多信息。
内联 PDF 的概念证明可在内联分支获得。
推荐阅读
- node.js - MediaSource,视频缓冲
- laravel - Laravel 8 更新
- vue.js - 无法将 fetch() 数据分配给 vue 属性
- javascript - 在 onmessage 事件之外使用 WebSocket 数据
- puppet - Puppet 下载文件而不触发更改通知
- spring-boot - Azure Spring Boot 应用服务不断重启
- javascript - 分配页面网址把手js
- linux - Buildroot 错误编译:无法在本地验证颁发者的权限
- angular - 在执行下一个代码之前等待 forkjoin 完成
- apache-flink - flink 类型提示中的自定义聚合函数