#android #pdf #dart #flutter
#Android #PDF #dart #flutter
Вопрос:
У меня есть pdf_screen.dart-файл, который будет отображать PDF-файл непосредственно при открытии, кто-нибудь может объяснить мне, как использовать функции этой библиотеки под названием flutter pdf Viewer только для отображения моего PDF?
Пример библиотеки Flutter PDF Viewer
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?
}
}
}
Ответ №1:
Как говорится в readme, эта библиотека запускает новое намерение, поэтому она заменяет ваше приложение Flutter в стеке, пока вы не нажмете кнопку «Назад». На примере ясно показано, как этого добиться.
Однако, по мере продолжения работы readme, доступно подтверждение концепции, позволяющее отображать PDF-файл в вашем приложении Flutter. Ознакомьтесь с веткой на github, чтобы узнать больше.
Подтверждение концепции встроенных PDF-файлов доступно в ветке inline.
Комментарии:
1. Я не понимаю, где вызвать PDFViewer.load … без onpressed: откроется мой экран, и мне нужно будет показать pdf напрямую.
2. В конце
getPdf
выглядит вероятным. В качестве альтернативы сделайте это вместо перехода на эту страницу.