Can not read from assets.
I have placed a pdf in my flutter app assets folder.
When I try to point the PDFView filePath parameter to my assets directory, I get....
"java.io.FileNotFoundException: No such file or directory".
same problem here, did you know what went wrong?
@endigo Why was this closed with no explanation? I'm having the same issue on android.
meaby someone will want it, to do like I did
final ByteData data = await rootBundle.load('assets/pdf/form_template_$currentLocale.pdf');
final List
Suppose widget.path contains the asset path (ex.: assets/my-document.pdf), use rootBundle to load asset byte data:
import 'dart:async';
import 'package:bovpro_app/core/helpers/custom_logger.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
class PDFPage extends StatefulWidget {
final String title;
final String path;
const PDFPage({super.key, required this.title, required this.path});
@override
State<PDFPage> createState() => _PDFPageState();
}
class _PDFPageState extends State<PDFPage> with WidgetsBindingObserver {
final Completer<PDFViewController> _controller =
Completer<PDFViewController>();
int? pages = 0;
int? currentPage = 0;
bool isReady = false;
String errorMessage = '';
ByteData? pdfData;
@override
void initState() {
super.initState();
rootBundle.load(widget.path).then((data) {
setState(() {
pdfData = data;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Stack(
children: <Widget>[
PDFView(
pdfData: pdfData!.buffer.asUint8List(),
enableSwipe: true,
autoSpacing: false,
pageFling: true,
pageSnap: true,
defaultPage: currentPage!,
fitPolicy: FitPolicy.BOTH,
preventLinkNavigation:
false, // if set to true the link is handled in flutter
onRender: (pages) {
setState(() {
pages = pages;
isReady = true;
});
},
onError: (error) {
setState(() {
errorMessage = error.toString();
});
logger.i(error.toString());
},
onPageError: (page, error) {
setState(() {
errorMessage = '$page: ${error.toString()}';
});
logger.i('$page: ${error.toString()}');
},
onViewCreated: (PDFViewController pdfViewController) {
_controller.complete(pdfViewController);
},
onLinkHandler: (String? uri) {
logger.i('goto uri: $uri');
},
onPageChanged: (int? page, int? total) {
logger.i('page change: $page/$total');
setState(() {
currentPage = page;
});
},
),
errorMessage.isEmpty
? !isReady
? const Center(
child: CircularProgressIndicator(),
)
: Container()
: Center(
child: Text(errorMessage),
)
],
),
);
}
}