使用 PDFViewer 包显示带有抖动的 pdf 文件时出现 LateError

问题描述

我在调用 Future 函数时遇到了问题,这个函数使用了一个(后期)变量,目标是使用 (PDFViewr)...

问题:

======== Exception caught by widgets library =======================================================
The following LateError was thrown building CourseDetails(dirty,state: _CourseDetailsstate#dac32):
LateInitializationError: Field 'document' has not been initialized.

The relevant error-causing widget was: 
  CourseDetails file:///E:/cihan_university/mobile_programming/mp/courses_app/lib/main.dart:45:52
When the exception was thrown,this was the stack: 
#0      CourseDetailsController.document (package:courses_app/people/controllers/course_details_controller.dart)
#1      _CourseDetailsstate.build (package:courses_app/people/views/course_details.dart:53:72)
#2      StatefulElement.build (package:Flutter/src/widgets/framework.dart:4691:27)
#3      ComponentElement.performRebuild (package:Flutter/src/widgets/framework.dart:4574:15)
#4      StatefulElement.performRebuild (package:Flutter/src/widgets/framework.dart:4746:11)
...
====================================================================================================

这里是控制器的代码

class CourseDetailsController extends GetxController {
  late PDFDocument document;
  loadDocument(String url) async {
    try {
      document = await PDFDocument.fromURL(
          url);
    } on Exception catch (e) {
      print(e);
    }
  }

并在视图中使用这些控制器:

class _CourseDetailsstate extends State<CourseDetails> {

  final details = Get.arguments[1];
  final name = Get.arguments[2];
  CourseDetailsController courseDetailsController = Get.find();
  @override
  void initState() {
    courseDetailsController.loadDocument(details).whenComplete((){
      setState(() {});
    });
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Flexible(
              child: 
                  Container(
                    child: PDFViewer(document: courseDetailsController.document,)
                  ),

我知道问题来自(异步)所以需要一些时间然后向我展示pdf没有任何问题:所以我使用了上面的代码

@override
      void initState() {
        courseDetailsController.loadDocument(details).whenComplete((){
          setState(() {});
        });
        super.initState();
      }

我还看到错误消息几秒钟,然后显示 pdf>>>> 我一直在使用 (GetX),那么我该如何解决这个问题呢? ,或者在Getx中是否有更好的方法?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)