Basically the title. My app initially loads just fine without any errors. I have a button that is supposed to display a PDF located in my assets. When I click the button it throws the error shown in the title. I'm fairly new to coding so I'll try to answer any questions/feedback the best I can.
The error code:
E/flutter ( 4906): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, null, null)
E/flutter ( 4906): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter ( 4906): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter ( 4906): <asynchronous suspension>
E/flutter ( 4906): #2 AndroidViewController._create (package:flutter/src/services/platform_views.dart:640:54)
E/flutter ( 4906): #3 AndroidViewController.setSize (package:flutter/src/services/platform_views.dart:557:14)
E/flutter ( 4906): #4 RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:174:29)
E/flutter ( 4906): #5 RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:155:5)
E/flutter ( 4906): #6 RenderObject.layout (package:flutter/src/rendering/object.dart:1703:9)
E/flutter ( 4906): #7 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #8 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #9 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:505:15)
E/flutter ( 4906): #10 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #11 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:163:11)
E/flutter ( 4906): #12 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:477:7)
E/flutter ( 4906): #13 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:232:7)
E/flutter ( 4906): #14 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:391:14)
E/flutter ( 4906): #15 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #16 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #17 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #18 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #19 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1232:11)
E/flutter ( 4906): #20 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #21 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #22 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #23 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #24 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #25 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #26 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #27 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #28 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #29 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #30 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #31 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #32 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #33 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
E/flutter ( 4906): #34 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #35 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3166:14)
E/flutter ( 4906): #36 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7)
E/flutter ( 4906): #37 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:505:15)
E/flutter ( 4906): #38 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1584:7)
E/flutter ( 4906): #39 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:844:18)
E/flutter ( 4906): #40 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:344:19)
E/flutter ( 4906): #41 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:774:13)
E/flutter ( 4906): #42 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
E/flutter ( 4906): #43 SchedulerBinding._invokeFrameCallback (package:f
My code:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:mchd_protocol_beta/screens/employee_sign_in.dart';
void main() => runApp(MyApp());
class PDFTestPage extends StatefulWidget {
@override
_PDFTestState createState() => _PDFTestState();
}
class _PDFTestState extends State<PDFTestPage>{
String assetPDFPath = "";
@override
void initState(){
super.initState();
getFileFromAsset("assets/PDFs/ACS.pdf").then((f){
setState(() {
assetPDFPath = f.path;
});
});
}
Future<File>getFileFromAsset(String asset)async{
try{
//pulls the pdf from assets and stores it as data
var data = await rootBundle.load("assets/PDFs/ACS.pdf");
//changes the data from the asset to bytes
var bytes = data.buffer.asUint8List();
var dir = await getApplicationDocumentsDirectory();
File file = File("${dir.path}/ACS.pdf");
//passes the bytes that were pulled earlier to the assetfile
File assetFile = await file.writeAsBytes(bytes);
return assetFile;
}catch(e){
throw Exception("Error Loading Asset file. This is the Try/catch");
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'PDF Test Page',
home: Scaffold(
appBar: AppBar(
backgroundColor: Colors.lightBlue,
leading: new IconButton(
icon: new Icon(Icons.arrow_back, color: Colors.black),
onPressed: () => Navigator.of(context).pop(),
),
title: Center(child:
Text('PDF Test Page',
style: TextStyle (color: Colors.white),)),
actions: <Widget>[
IconButton(icon: Icon(Icons.search))
],),
body: Center(child: Builder(
builder: (context) =>Column(mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
color: Colors.cyan,
child: Text("Open From Asset"),
onPressed: () {
if (assetPDFPath != null) {
Navigator.push(
context,
MaterialPageRoute(builder: (context)=>PdfViewPage()),
);
}
},
)
],
)
),),
),
);
}
}
class PdfViewPage extends StatefulWidget {
final String path;
const PdfViewPage({Key key, this.path}) : super(key: key);
@override
_PdfViewPageState createState() => _PdfViewPageState();
}
class _PdfViewPageState extends State<PdfViewPage> {
int _totalPages = 0;
int _currentPage = 0;
bool pdfReady = false;
PDFViewController _pdfViewController;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("My Document"),),
body: Stack(
children: <Widget>[
PDFView(
filePath: widget.path,
autoSpacing: true,
pageSnap: true,
onError: (e){
print(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
],
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
_currentPage>0?FloatingActionButton.extended(
backgroundColor: Colors.red,
label: Text("Go to ${_currentPage-1}"),
onPressed: (){
_currentPage -=1;
_pdfViewController.setPage(_currentPage);
},
):Offstage(),
_currentPage>_totalPages?FloatingActionButton.extended(
backgroundColor: Colors.green,
label: Text("Go to ${_currentPage+1}"),
onPressed: (){
_currentPage +=1;
_pdfViewController.setPage(_currentPage);
},
):Offstage(),
],),
);
}
}