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)
- PdfControllerPinch.calculatePageFitMatrix RangeError (length): Invalid value: Not in inclusive range 0..1: -1
- PDFX: Downgrade uuid back to ^3.0.6 HOT 6
- : error G5FE39F1E: Type 'DecoderCallback' not found. HOT 4
- PdfViewPinch flicks and auto scroll to top on web HOT 1
- Type 'DecoderCallback' not found. HOT 2
- Getting `Error: Type 'DecoderCallback' not found.` Error when upgrade flutter to 3.16.0 HOT 2
- New Pub.dev package release with latest fix are planed ? HOT 32
- Error: Type 'DecoderCallback' not found - PDFX - Flutter HOT 2
- PDFX not works in Flutter 3.16.3 when use data type Uint8List HOT 9
- Preload some pages
- Publish new version to pub.dev HOT 1
- Rendering on Android blocks UI HOT 3
- Add page flip animation
- not working for windows HOT 1
- Linux Support
- update `ReadMe` with the correct import
- Error in Pdfx v2.5.0: 'DecoderCallback' Type Issue in PdfPageImageProvider HOT 5
- Unable to run on Flutter Version >= 3.15 HOT 2
- Build not compatible with flutter 3.16.8 release HOT 2
- Error: Type 'DecoderCallback' not found HOT 2
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.