私のアプリにはPDFリーダーがあり、この関数を使用してURLからPDFを取得し、ファイルをローカルパスに保存します
Future<File> getFileFromUrl(String url) async {
try {
var data = await http.get(url);
var bytes = data.bodyBytes;
var dir = await getApplicationSupportDirectory();
File file = File("${dir.path}/some.pdf");
File urlFile = await file.writeAsBytes(bytes);
return urlFile;
} catch (e) {
throw Exception("Error opening url file");
}
}
このプロセスの後で、クラスを呼び出してこれを表示しますPDF新しいルートで
import 'package:flutter/material.Dart';
import 'package:flutter_pdfview/flutter_pdfview.Dart';
class CustomPdfView extends StatefulWidget {
final String title;
final String urlPdf;
CustomPdfView(
this.title,
this.urlPdf
);
@override
_CustomPdfViewState createState() => _CustomPdfViewState();
}
class _CustomPdfViewState extends State<CustomPdfView> {
//int _totalPages = 0;
//int _currentPage = 0;
bool pdfReady = false;
//PDFViewController _pdfViewController;
@override
Widget build(BuildContext context) {
print('Aqui entra antes: ${widget.urlPdf}');
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Stack(
children: <Widget>[
PDFView(
filePath: widget.urlPdf,
autoSpacing: true,
enableSwipe: true,
pageSnap: true,
swipeHorizontal: true,
nightMode: false,
onError: (e) {
print("error $e");
},
onRender: (_pages) {
setState(() {
//_totalPages = _pages;
pdfReady = true;
});
},
onViewCreated: (PDFViewController vc) {
//_pdfViewController = vc;
},
onPageChanged: (int page, int total) {
setState(() {});
},
onPageError: (page, e) {},
),
!pdfReady
? Center(
child: CircularProgressIndicator(),
)
: Offstage()
],
),
);
}
}
デバッグモードではすべて正常に動作しますが、リリース時にアプリを実行すると、CustomPdfViewでアプリがクラッシュします。
エラーが何なのかわからない、すでに追加した、/ app/src/main/AndroidManifest.xmlのSTORAGE権限
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
また、アプリがリリース時に実行されているため、コンソールにエラー行を表示する方法がわかりません。
同じ問題....私はそれを修正しました
それでも問題が解決しない場合は、これらのコマンドを試してください
フラッタービルドapk --no-shrink
フラッタービルドapk --release --split-per-abi --no-shrink