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)