Во-первых, заранее спасибо за любые советы по этому вопросу!
Хорошо, поэтому у меня возникла проблема с обновлением пользовательского интерфейса после выбора кнопки навигации. Когда я нажимаю одну из кнопок навигации, я вижу, что вызывается setState, и индекс, и путь pdfView обновляются до нужного файла.
Вот код:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pdf_viewer_plugin/pdf_viewer_plugin.dart';
class PDFPreview extends StatefulWidget{
PDFPreview(this.aContext, {this.document, this.files, Key key}) : super(key:key);
final BuildContext aContext;
final String document;
final List<File> files;
@override
_PDFPreview createState() => _PDFPreview();
}
class _PDFPreview extends State<PDFPreview> {
_PDFWidget pdfView;
int _index = 0;
@override
Widget build(BuildContext context) {
if(widget.document == null) {
pdfView = new _PDFWidget(widget.files[_index].path);
print("Path: ${widget.files[_index].path}");
print("PDF: ${pdfView.path}");
}else{
pdfView = new _PDFWidget(widget.document);
}
return Scaffold(
bottomNavigationBar:
widget.document == null && widget.files.length > 1 ?
BottomAppBar(child:
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(child: IconButton(icon: Icon(Icons.arrow_back_ios), onPressed: () {
if(_index != 0){
setState(() {
_index--;
});
print("Current Index: $_index");
}
},),),
Expanded(child: IconButton(icon: Icon(Icons.edit), onPressed: () {Navigator.pop(context, 0); },),),
Expanded(child: Text("${_index + 1} / ${widget.files.length}", textAlign: TextAlign.center,),),
Expanded(child: IconButton(icon: Icon(Icons.done_outline), onPressed: () { Navigator.pop(context, 1);},),),
Expanded(child: IconButton(icon: Icon(Icons.arrow_forward_ios), onPressed: () {
if(_index < widget.files.length - 1) {
setState(() {
_index++;
});
print("New Current Index: $_index");
}
},),),
],),)
:
BottomAppBar(child:
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(child: IconButton(icon: Icon(Icons.edit), onPressed: () {Navigator.pop(context, 0); },),),
Expanded(child: IconButton(icon: Icon(Icons.done_outline), onPressed: () { Navigator.pop(context, 1);},),),
],),)
,
body: pdfView
);
}
}
class _PDFWidget extends StatelessWidget{
_PDFWidget(this.path);
final String path;
@override
Widget build(BuildContext context) {
return new PdfViewer(
filePath: path,
);
}
}
Вот результат (навигация вперед)
flutter: Path: {longPath}/sample.pdf
flutter: PDF: {longPath}/sample.pdf
Мне было интересно, есть ли у кого-нибудь потенциальные решения для получения PDFвид для обновления. Кроме того, если бы кто-то мог прояснить это для меня, было бы очень признательно, когда setState завершает сборку, функция автоматически запускается, верно?