【发布时间】:2021-07-26 12:37:21
【问题描述】:
当用户点击按钮时,我有这段代码可以显示 pdf。但是,它不起作用。 我没有看到我在这里做错了什么。拜托,你能帮我解决这个问题吗?非常感谢。 我得到了一个新的视图,但视图是空白的。 当文件是本地文件时,它工作正常,我的意思是在我的手机上。但是当pdf在firebase上时,我得到一个空白页。 我已经修改了代码。
我再次修改了代码。但仍然无法正常工作。如果你们中的一个人可以帮助我解决这个问题,我们将不胜感激。我的项目现在被阻止了。这让我发疯了。非常感谢。
//on another page
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Display_PDF_Selected_Storage(task_Attachments[j].toString())));
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:path_provider/path_provider.dart';
class Display_PDF_Selected_Storage extends StatefulWidget {
final int pdfIndex;
final String selectedPdfPath;
Display_PDF_Selected_Storage(this.selectedPdfPath, {Key key, this.pdfIndex, }) : super(key: key);
@override
_Display_PDF_Selected_StorageState createState() => _Display_PDF_Selected_StorageState(selectedPdfPath,pdfIndex);
}
class _Display_PDF_Selected_StorageState extends State<Display_PDF_Selected_Storage> {
PDFViewController controller;
int indexPage = 0, indexPdf, pages = 0, currentPage = 0;
bool isReady = false;
String selectedPdfPath;
_Display_PDF_Selected_StorageState(this.selectedPdfPath,this.indexPdf,);
@override
Widget build(BuildContext context) {
final text = '${indexPage + 1} of $pages';
return Scaffold(
appBar: new AppBar(
title: new Text(selectedPdfPath.split('/').last),
actions: pages >= 2
? [
Center(child: Text(text)),
IconButton(
icon: Icon(Icons.chevron_left, size: 32),
onPressed: () {
final page = indexPage == 0 ? pages : indexPage - 1;
controller.setPage(page);
},
),
IconButton(
icon: Icon(Icons.chevron_right, size: 32),
onPressed: () {
final page = indexPage == pages - 1 ? 0 : indexPage + 1;
controller.setPage(page);
},
),
]
: null,
),
body:Stack(
children: <Widget>[
PDFView(
filePath: selectedPdfPath,
autoSpacing: false,
swipeHorizontal: true,
enableSwipe: true,
pageSnap: false,
pageFling: true,
onRender: (pages) => setState(() => this.pages = pages),
onViewCreated: (controller) =>
setState(() => this.controller = controller),
onPageChanged: (indexPage, _) =>
setState(() => this.indexPage = indexPage),
// errorMessage.isEmpty
),
],
),
);
}
Future <String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async{
final path = await _localPath;
return File('$path/guidelines.pdf');
}
Future<File> writeToLocal(Uint8List bytes) async {
final file = await _localFile;
return file.writeAsBytes(bytes);
}
}
【问题讨论】: