颤振应用程序在使用flutter_pdfview包时崩溃



包 : flutter_pdfview

当 pdf 下载在我使用 flutter apk 构建构建的 apk中完成时,我的应用程序崩溃。

下载完成后调试的相同操作控制台给出错误但不会崩溃,pdf_viewer工作正常。

W/System  (31159): A resource failed to call release.

请建议我可以做些什么来阻止我的应用程序在下载文件后崩溃。

代码是这样的

import 'dart:async';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
class PdfViewerPage extends StatefulWidget {
final name;
final title;
PdfViewerPage({this.name, this.title});
@override
_PdfViewerPageState createState() => _PdfViewerPageState();
}
class _PdfViewerPageState extends State<PdfViewerPage> {
bool loading = true;
String localfile;
int current = 1;
int total;
Future<String> loaddata() async {
var dir = await getTemporaryDirectory();
File file = new File(dir.path + widget.name);
await FirebaseStorage()
.ref()
.child(widget.name)
.getData(50000000)
.then((value) async {
file.writeAsBytes(value);
}).catchError((onError) {
Fluttertoast.showToast(msg: onError);
});
return file.path;
}
@override
void initState() {
super.initState();
loaddata().then((value) {
setState(() {
localfile = value;
loading = false;
});
});
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text(widget.title, style: TextStyle(color: Colors.black)),
),
body: loading
? Center(
child: CircularProgressIndicator(),
)
: PDFView(
filePath: localfile,
fitEachPage: true,
onPageChanged: (t, c) {
setState(() {
current = t + 1;
total = c;
});
},
),
floatingActionButton: total != null
? FloatingActionButton.extended(
backgroundColor: Colors.white,
onPressed: () {},
label: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text(current.toString()),
SizedBox(
width: 20,
),
Text(total.toString())
],
))
: Container(),
));
}
}

我在StackOverflow链接上发现了一个类似的问题。

当我们从代码构建apk时,Flutter会阻止插件代码,从而导致应用程序崩溃。 解决方案是使用progaurd规则使pdf插件能够工作。ProGaurd规则在链接中提到。

最新更新