Я думаю, что проблема заключается в операции "asyn c", которая еще не завершена при вызове метода сборки.
Вместо условного document !=null
, попробуйте поместить loadFromUrl в FutureBuilder, например так:
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: Center(
child: FutureBuilder(
future: loadFromUrl(),
builder: (context, snapshot) {
if (snapshot.hasData == false) {
return CircularProgressIndicator();
}
//or snapshot.data if your loadFromUrl returns the document, I think that is more "correct"
return PDFViewer(document: document);
},
)),
),
],
),
),
);
}
и ваш метод должен вернуть будущее чего-либо (PDFDocument в вашем случае)
Future<String> loadFromUrl() async {
await Future.delayed(Duration(seconds: 2));
}