Comments (7)
First of all, I'm sorry for my bad English. I am looking for a method that allows the user to go directly to a specific page.
from packages.flutter.
native_pdf_view
https://pub.dev/packages/native_pdf_view
from packages.flutter.
you can attach PageController
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _actualPageNumber = 1;
PDFDocument _document;
PageController _pageController; // <---------
@override
void initState() {
_pageController = PageController(
initialPage: 0
);
super.initState();
}
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) => MaterialApp(
theme: ThemeData(primaryColor: Colors.white),
home: Scaffold(
appBar: AppBar(title: Text('PDFView example')),
body: FutureBuilder<PDFDocument>(
future: _getDocument(),
builder: (_, snapshot) {
if (snapshot.hasData) {
return Stack(
children: <Widget>[
PDFView(
controller: _pageController, // <---- attach controller
document: snapshot.data,
onPageChanged: (page) {
setState(() {
_actualPageNumber = page;
});
},
),
Align(
alignment: Alignment.center,
child: Text(
'$_actualPageNumber/${snapshot.data.pagesCount}',
style: TextStyle(fontSize: 34),
),
)
],
);
}
if (snapshot.hasError) {
return Center(
child: Text(
'PDF Rendering does not '
'support on the system of this version',
),
);
}
return Center(child: CircularProgressIndicator());
},
),
),
);
Future<PDFDocument> _getDocument() async {
if (_document != null) {
return _document;
}
if (await hasSupport()) {
return _document = await PDFDocument.openAsset('assets/sample.pdf');
} else {
throw Exception(
'PDF Rendering does not '
'support on the system of this version',
);
}
}
}
after call for choose:
_pageController.jumpToPage(pageIndex);
or call for animated choose:
_pageController.animateToPage(
pageIndex,
curve: Curves.decelerate,
duration: Duration(milliseconds: 250),
);
from packages.flutter.
@emreesen27 What kind of plugin are you talking about?
from packages.flutter.
plugin native_pdf_view ?
from packages.flutter.
With the caveat, Serge, that you should never load anything into a FutureBuilder
like this. Calling the loader function from inside the builder means that it will be called repeatedly for each frame rendered, reloading the PDF each and every time.
Instead, declare a Future
variable, not a function:
Future<PDFDocument> document;
Populate it inside initState()
:
_document = PDFDocument.openAsset('assets/sample.pdf');
then refer to this variable in the builder:
FutureBuilder<PDFDocument>(
future: _document,
See the official docs for details.
from packages.flutter.
@deakjahn I know. This code is used a simple example only.
from packages.flutter.
Related Issues (20)
- Null check operator used on a null value
- Error in iOS: Could not build the precompiled application for the device. HOT 1
- LiveList.options not working with NotificationListener
- Drawing annotations on the pdfx
- pdfx: Migrate to `package:web` to support WASM HOT 2
- PDFx: page resize with different aspect ratio HOT 1
- When the PDF is one-page-long and user zooms in, he cannot zoom out completely.
- Printing and pdfx are incompatible in windows
- How can i custom Widget?
- Support for js ^0.7.1
- pdfx 2.6.0 does not build on Windows
- Support for Signature widgets/annotations ?
- getting cfi as null "/6/0[null]!/4/2/4" in middle HOT 1
- [pdfx] Android : Close document throw a PlateformException with an Unknown error HOT 1
- [pdfx] Update to `device_info_plus` >= 10.0.1 HOT 15
- Support js 0.7.1 in pdfx
- Can you update the image package to be compatible with other packages ?
- An unhandleable error is thrown when attempting to display unsupported files, such as password-protected PDFs
- updagre to photo_view 0.15.0
- Please update to support photo_view 0.15.0 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from packages.flutter.