Flutter 'owner!._debugCurrentBuildTarget == this': 不正确。 #87

Posted

技术标签:

【中文标题】Flutter \'owner!._debugCurrentBuildTarget == this\': 不正确。 #87【英文标题】: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),
                    ),
                  ),
                ),

【问题讨论】:

【参考方案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 ***Error 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
════════════════════════════════════════════════════════════════════════════════

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

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 是另一个类。

【讨论】:

以上是关于Flutter 'owner!._debugCurrentBuildTarget == this': 不正确。 #87的主要内容,如果未能解决你的问题,请参考以下文章

loadNibNamed(_:owner:options:) 崩溃

leetcode_1052. Grumpy Bookstore Owner

React native - 对象作为 React 子对象无效(发现:带有键的对象 $$typeof, type, key, ref, props, _owner, _store)

描述符

7_27描述符 18min

js与ios交互,js示例