【问题标题】:Flutter 'owner!._debugCurrentBuildTarget == this': is not true. #87Flutter 'owner!._debugCurrentBuildTarget == this': 不正确。 #87
【发布时间】:2021-01-29 15:19:18
【问题描述】:

当我尝试从 url 加载 pdf 时出现错误。它显示了pdf的页数,但随后崩溃了。

使用插件 - https://pub.dev/packages/advance_pdf_viewer

════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (28488): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (28488): The following assertion was thrown while rebuilding dirty elements:
I/flutter (28488): 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4371 pos 14:
I/flutter (28488): 'owner!._debugCurrentBuildTarget == this': is not true.
I/flutter (28488):
I/flutter (28488): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter (28488): more information in this error message to help you determine and fix the underlying cause.
I/flutter (28488): In either case, please report this assertion by filing a bug on GitHub:
I/flutter (28488):   https://github.com/flutter/flutter/issues/new?template=BUG.md
I/flutter (28488):
I/flutter (28488): The relevant error-causing widget was:
I/flutter (28488):   PDFViewer
I/flutter (28488):   
lib/…/panSignatureScreens/pan_screen.dart:156
I/flutter (28488):
I/flutter (28488): When the exception was thrown, this was the stack:
I/flutter (28488): #2      Element.rebuild.<anonymous closure> 
package:flutter/…/widgets/framework.dart:4371
I/flutter (28488): #3      Element.rebuild 
package:flutter/…/widgets/framework.dart:4374
I/flutter (28488): #4      BuildOwner.buildScope 
package:flutter/…/widgets/framework.dart:2777
I/flutter (28488): #5      WidgetsBinding.drawFrame 
package:flutter/…/widgets/binding.dart:906
I/flutter (28488): #6      RendererBinding._handlePersistentFrameCallback 
package:flutter/…/rendering/binding.dart:309
I/flutter (28488): #7      SchedulerBinding._invokeFrameCallback 
package:flutter/…/scheduler/binding.dart:1117
I/flutter (28488): #8      SchedulerBinding.handleDrawFrame 
package:flutter/…/scheduler/binding.dart:1055
I/flutter (28488): #9      SchedulerBinding._handleDrawFrame 
package:flutter/…/scheduler/binding.dart:971
I/flutter (28488): #13     _invoke  (dart:ui/hooks.dart:251:10))
I/flutter (28488): #14     _drawFrame  (dart:ui/hooks.dart:209:3))

我的用法 - 列内(儿童:[])

new Expanded(
                  child: Container(
                    child: PDFViewer(
                      document: document,
                    ),
                    decoration: BoxDecoration(
                      border: Border.all(color: Colors.black),
                    ),
                  ),
                ),

【问题讨论】:

    标签: flutter dart flutter-layout pdf-viewer


    【解决方案1】:

    我遇到了同样的问题,问题是我在同一个班级内调用了班级。见正文:下。用另一个小部件替换它可以解决问题。

    class DicePage extends StatelessWidget {
          @override
          Widget build(BuildContext context) {
            return MaterialApp(
                       home: Scaffold(
                       backgroundColor: Colors.red,
                       appBar: AppBar(
                                 title: Text('Dicee'),
                                 backgroundColor: Colors.red,
                               ),
                        body: DicePage(),
          ),
        );
      }
    }
    

    【讨论】:

    • 确实发生在我身上:D
    【解决方案2】:

    我刚刚遇到了类似的错误:

    ════════ Exception caught by widgets library ═══════════════════════════════════
    The following StackOverflowError was thrown building Container:
    Stack Overflow
    
    The relevant error-causing widget was
    Container
    lib/widgets/profile_wiget.dart:9
    When the exception was thrown, this was the stack
    #0      new _HashMap (dart:collection-patch/collection_patch.dart)
    #1      new HashMap (dart:collection-patch/collection_patch.dart:33:22)
    #2      RegExp._cache (dart:core-patch/regexp_patch.dart:109:11)
    #3      RegExp._cache (dart:core-patch/regexp_patch.dart)
    #4      new RegExp (dart:core-patch/regexp_patch.dart:17:31)
    ...
    ════════════════════════════════════════════════════════════════════════════════
    
    ════════ Exception caught by widgets library ═══════════════════════════════════
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 4371 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true.
    The relevant error-causing widget was
    ProfileWidget
    lib/widgets/profile_wiget.dart:10
    ════════════════════════════════════════════════════════════════════════════════
    
    ════════ Exception caught by widgets library ═══════════════════════════════════
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 4371 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true.
    The relevant error-causing widget was
    Container
    lib/widgets/profile_wiget.dart:9
    ════════════════════════════════════════════════════════════════════════════════
    

    这可能是我收到 stackoverflow 的另一个原因,但我的回答有望帮助其他搜索此错误消息的人。
    我的问题是我制作了一个返回自身实例的小部件(我将两个类命名为相同):

    class ProfileWidget extends StatelessWidget {
      final Profile profile = Profile(name: 'Someone');
      @override
      Widget build(BuildContext context) {
        return Container(
          child: (profile.isAnon) ? AnonProfileWidget() : ProfileWidget(), 
        );
      }
    }
    

    我通过简单地重命名一个类来解决它。

    【讨论】:

    • 为我节省了很多时间。谢谢:)
    【解决方案3】:

    您在使用 FirebaseMessaging 吗?如果是这样,则可能是 Advance_pdf_viewer 与 FirebaseMessaging 的 onBackgroundMessage 冲突。

    【讨论】:

      【解决方案4】:

      是的!仅当您使用 Firebase 云消息传递服务的后台消息处理程序时,才会与 advance_pdf_viewer 发生冲突。

      例如,如果你有类似的东西:

      Future<void> initNotifs() async {
          FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
            print("onMessage: $message");
          });
          final FirebaseMessaging messaging;
          messaging = FirebaseMessaging.instance;
          await messaging.getToken().then((c) => print(c));
          await messaging
              .subscribeToTopic('general')
              .then((value) => print('subscribed to general'));
           FirebaseMessaging.onBackgroundMessage(
               PushNotificationsHandler.firebaseMessagingBackgroundHandler);
        }
      

      评论以下代码和/或在定位器/其他视图中配置通知:

      FirebaseMessaging.onBackgroundMessage(
                   PushNotificationsHandler.firebaseMessagingBackgroundHandler);
      

      Ps:PushNotificationsHandler 是另一个类。

      【讨论】:

        猜你喜欢
        • 2020-03-26
        • 2021-10-28
        • 2021-09-26
        • 2021-06-28
        • 2011-10-21
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多