【问题标题】:Error: '_elements.contains(element)': is not true错误:'_elements.contains(element)':不正确
【发布时间】:2017-10-13 11:02:14
【问题描述】:

过去两天在我的颤振项目中看到此错误 '_elements.contains(element)': is not true.,这从一开始就工作得很好。我很抱歉这么说,但我对这个错误一无所知,但我认为我错过了导致这个错误的东西。此外,当我热重新加载同一页面时,布局会被填充,但会引发异常。

这也偶尔显示 Duplicate GlobalKeys() 检测到,但一开始并非如此。

如果他们以前偶然发现这些错误,请有人帮助我。我真的不能写一个例子来重现同样的问题。非常感谢。

我给出的错误详情如下:

Performing hot reload...
I/flutter (22248): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY 
╞═══════════════════════════════════════════════════════════
I/flutter (22248): The following assertion was thrown building 
TickerMode(mode: disabled):
I/flutter (22248): 'package:flutter/src/widgets/framework.dart': Failed 
assertion: line 1766 pos 12:
I/flutter (22248): '_elements.contains(element)': is not true.
I/flutter (22248): 
I/flutter (22248): Either the assertion indicates an error in the framework 
itself, or we should provide substantially
I/flutter (22248): more information in this error message to help you 
determine and fix the underlying cause.
I/flutter (22248): In either case, please report this assertion by filing a 
bug on GitHub:
I/flutter (22248):   https://github.com/flutter/flutter/issues/new
I/flutter (22248): 
I/flutter (22248): When the exception was thrown, this was the stack:
I/flutter (22248): #2      _InactiveElements.remove 
 (package:flutter/src/widgets/framework.dart:1766:12)
I/flutter (22248): #3      Element._retakeInactiveElement 
(package:flutter/src/widgets/framework.dart:2850:29)
I/flutter (22248): #4      Element.inflateWidget 
(package:flutter/src/widgets/framework.dart:2873:32)
I/flutter (22248): #5      Element.updateChild 
(package:flutter/src/widgets/framework.dart:2688:12)
I/flutter (22248): #6      ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #7      Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #8      ProxyElement.update 
(package:flutter/src/widgets/framework.dart:3792:5)
I/flutter (22248): #9      Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #10     RenderObjectElement.updateChildren 
(package:flutter/src/widgets/framework.dart:4262:32)
I/flutter (22248): #11     _TheatreElement.update 
(package:flutter/src/widgets/overlay.dart:508:17)
I/flutter (22248): #12     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #13     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #14     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #15     StatefulElement.update 
(package:flutter/src/widgets/framework.dart:3682:5)
I/flutter (22248): #16     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #17     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #18     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #19     ProxyElement.update 
(package:flutter/src/widgets/framework.dart:3792:5)
I/flutter (22248): #20     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #21     SingleChildRenderObjectElement.update 
(package:flutter/src/widgets/framework.dart:4535:14)
I/flutter (22248): #22     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #23     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #24     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #25     StatefulElement.update 
(package:flutter/src/widgets/framework.dart:3682:5)
I/flutter (22248): #26     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #27     SingleChildRenderObjectElement.update 
(package:flutter/src/widgets/framework.dart:4535:14)
I/flutter (22248): #28     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #29     SingleChildRenderObjectElement.update 
(package:flutter/src/widgets/framework.dart:4535:14)
I/flutter (22248): #30     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #31     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #32     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #33     StatefulElement.update 
(package:flutter/src/widgets/framework.dart:3682:5)
I/flutter (22248): #34     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #35     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #36     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #37     ProxyElement.update 
(package:flutter/src/widgets/framework.dart:3792:5)
I/flutter (22248): #38     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #39     SingleChildRenderObjectElement.update 
(package:flutter/src/widgets/framework.dart:4535:14)
I/flutter (22248): #40     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #41     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #42     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #43     StatelessElement.update 
(package:flutter/src/widgets/framework.dart:3607:5)
I/flutter (22248): #44     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #45     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
I/flutter (22248): #46     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #47     StatelessElement.update 
(package:flutter/src/widgets/framework.dart:3607:5)
I/flutter (22248): #48     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #49     ComponentElement.performRebuild  
(package:flutter/src/widgets/framework.dart:3557:16)
 I/flutter (22248): #50     Element.rebuild 
 (package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #51     StatelessElement.update 
(package:flutter/src/widgets/framework.dart:3607:5)
I/flutter (22248): #52     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
 I/flutter (22248): #53     ComponentElement.performRebuild 
(package:flutter/src/widgets/framework.dart:3557:16)
 I/flutter (22248): #54     Element.rebuild 
(package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #55     StatelessElement.update 
(package:flutter/src/widgets/framework.dart:3607:5)
I/flutter (22248): #56     Element.updateChild 
(package:flutter/src/widgets/framework.dart:2677:15)
I/flutter (22248): #57     ComponentElement.performRebuild                                              
 (package:flutter/src/widgets/framework.dart:3557:16)
 I/flutter (22248): #58     Element.rebuild 
 (package:flutter/src/widgets/framework.dart:3446:5)
I/flutter (22248): #59     ProxyElement.update 
(package:flutter/src/widgets/framework.dart:3792:5)
 I/flutter (22248): #60     Element.updateChild 
 (package:flutter/src/widgets/framework.dart:2677:15)
  I/flutter (22248): #61     ComponentElement.performRebuild 
 (package:flutter/src/widgets/framework.dart:3557:16)
 I/flutter (22248): #62     Element.rebuild 
 (package:flutter/src/widgets/framework.dart:3446:5)
 I/flutter (22248): #63     ProxyElement.update 
 (package:flutter/src/widgets/framework.dart:3792:5)
  I/flutter (22248): #64     Element.updateChild 
  (package:flutter/src/widgets/framework.dart:2677:15)
  I/flutter (22248): #65     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
          I/flutter (22248): #66     Element.rebuild 
   (package:flutter/src/widgets/framework.dart:3446:5)
  I/flutter (22248): #67     StatefulElement.update 
  (package:flutter/src/widgets/framework.dart:3682:5)
  I/flutter (22248): #68     Element.updateChild 
    (package:flutter/src/widgets/framework.dart:2677:15)
  I/flutter (22248): #69     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
    I/flutter (22248): #70     Element.rebuild 
   (package:flutter/src/widgets/framework.dart:3446:5)
    I/flutter (22248): #71     ProxyElement.update 
  (package:flutter/src/widgets/framework.dart:3792:5)
  I/flutter (22248): #72     Element.updateChild 
  (package:flutter/src/widgets/framework.dart:2677:15)
   I/flutter (22248): #73     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
  I/flutter (22248): #74     Element.rebuild 
  (package:flutter/src/widgets/framework.dart:3446:5)
  I/flutter (22248): #75     StatefulElement.update 
 (package:flutter/src/widgets/framework.dart:3682:5)
  I/flutter (22248): #76     Element.updateChild 
 (package:flutter/src/widgets/framework.dart:2677:15)
 I/flutter (22248): #77     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
  I/flutter (22248): #78     Element.rebuild 
  (package:flutter/src/widgets/framework.dart:3446:5)
   I/flutter (22248): #79     ProxyElement.update 
  (package:flutter/src/widgets/framework.dart:3792:5)
   I/flutter (22248): #80     Element.updateChild 
    (package:flutter/src/widgets/framework.dart:2677:15)
 I/flutter (22248): #81     ComponentElement.performRebuild 
     (package:flutter/src/widgets/framework.dart:3557:16)
    I/flutter (22248): #82     Element.rebuild 
     (package:flutter/src/widgets/framework.dart:3446:5)
      I/flutter (22248): #83     ProxyElement.update 
     (package:flutter/src/widgets/framework.dart:3792:5)
   I/flutter (22248): #84     Element.updateChild 
    (package:flutter/src/widgets/framework.dart:2677:15)
   I/flutter (22248): #85     ComponentElement.performRebuild 
    (package:flutter/src/widgets/framework.dart:3557:16)
       I/flutter (22248): #86     Element.rebuild 
 (package:flutter/src/widgets/framework.dart:3446:5)
  I/flutter (22248): #87     StatelessElement.update 
     (package:flutter/src/widgets/framework.dart:3607:5)
   I/flutter (22248): #88     Element.updateChild 
  (package:flutter/src/widgets/framework.dart:2677:15)
     I/flutter (22248): #89     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
   I/flutter (22248): #90     Element.rebuild 
  (package:flutter/src/widgets/framework.dart:3446:5)
     I/flutter (22248): #91     StatefulElement.update 
  (package:flutter/src/widgets/framework.dart:3682:5)
  I/flutter (22248): #92     Element.updateChild 
  (package:flutter/src/widgets/framework.dart:2677:15)
  I/flutter (22248): #93     ComponentElement.performRebuild 
  (package:flutter/src/widgets/framework.dart:3557:16)
   I/flutter (22248): #94     Element.rebuild 
  (package:flutter/src/widgets/framework.dart:3446:5)
  I/flutter (22248): #95     ProxyElement.update 
    (package:flutter/src/widgets/framework.dart:3792:5)
   I/flutter (22248): #96     Element.updateChild 
   (package:flutter/src/widgets/framework.dart:2677:15)
   I/flutter (22248): #97     ComponentElement.performRebuild 
   (package:flutter/src/widgets/framework.dart:3557:16)
    I/flutter (22248): #98     Element.rebuild 
   (package:flutter/src/widgets/framework.dart:3446:5)
    I/flutter (22248): #99     BuildOwner.buildScope 
    (package:flutter/src/widgets/framework.dart:2246:33)
      I/flutter (22248): #100    












      BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&Renderer
     Binding&WidgetsBinding.drawFrame 
      (package:flutter/src/widgets/binding.dart:580:20)
       I/flutter (22248): #101    





    BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&Renderer
  Binding._handlePersistentFrameCallback 
   (package:flutter/src/rendering/binding.dart:200:5)
    I/flutter (22248): #102    
    BindingBase&SchedulerBinding._invokeFrameCallback 
   (package:flutter/src/scheduler/binding.dart:713:15)
   I/flutter (22248): #103    BindingBase&SchedulerBinding.handleDrawFrame 
     (package:flutter/src/scheduler/binding.dart:649:9)
     I/flutter (22248): #104    




   BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&Renderer
   Binding.scheduleWarmUpFrame.<anonymous closure> 
    (package:flutter/src/rendering/binding.dart:286:20)
   I/flutter (22248): #106    _Timer._runTimers (dart:isolate-
      patch/dart:isolate/timer_impl.dart:367)
      I/flutter (22248): #107    _Timer._handleMessage (dart:isolate-
     patch/dart:isolate/timer_impl.dart:401)
     I/flutter (22248): #108    _RawReceivePortImpl._handleMessage 
       (dart:isolate-patch/dart:isolate/isolate_patch.dart:163)
         I/flutter (22248): (elided 3 frames from class _AssertionError and 
       package dart:async-patch)
       I/flutter (22248): 

  ══════════════════════════════════════════════════════════════════════════
  ══════════════════════════
  Reloaded 0 of 492 libraries in 823ms.

我在我的应用程序中包含了一个示例,说明我正在尝试执行的操作。

main.dart

import 'package:flutter/rendering.dart';
import 'package:flutter/material.dart';
import 'package:untitled3/secondwidget.dart';

void main() {
  runApp(
    new Example(),
  );
}

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => new _ExampleState();
}

class _ExampleState extends State<Example> {
  int noOfBranches;

  @override
  void initState() {
    super.initState();
    getCount();
  }

  void getCount() {
    print('list builder count is ${noOfBranches}');
  }

  @override
  Widget build(BuildContext context) {
    setState(() {
      noOfBranches = 2;
    });

    return new MaterialApp(
      home: new Scaffold(
        body: new ListView.builder(
        itemCount: noOfBranches,
        itemBuilder: (BuildContext context, int index) {
          return new Card(
            child: new FlatButton(
                onPressed: (() {
                  Navigator.push(
                      context,
                      new MaterialPageRoute(
                          builder: (_) => new SecondWidget()));
                }),
                child: new Text('Next Widget')),
          );
        }),
      ),
    );
  }
 }

secondwidget.dart

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

  class SecondWidget extends StatefulWidget {
  @override
 _SecondWidgetState createState() => new _SecondWidgetState();
 }

 class _SecondWidgetState extends State<SecondWidget> {
  @override
  Widget build(BuildContext context) {
    return new Container(
      child: new Text('Second Widget'),
   );
  }
 }   

如果setState() 声明为在示例 main.dart 文件中给出,我不会在我的应用程序中看到错误

@override
   Widget build(BuildContext context) {
     setState(() {
    noOfBranches = 2;
      });
      .....
      }
 

但如果我在 getCount() 函数中声明 setState(),我只会看到此错误。

我不太清楚为什么会这样。

我实际上被这个错误困住了两天,任何帮助将不胜感激。

非常感谢, 鲯鳅

【问题讨论】:

  • 我们需要更多信息。添加一些代码会很棒。
  • 感谢您的回复@Darky。是的,你是对的,拥有代码会很棒,但它的代码很长,我可能无法在这里发布。因此,如果您能想到出现此错误的任何场景,我将不胜感激。
  • 你能至少试着解释一下,你在做什么吗?仅从错误消息来看,很难帮助您...
  • 谢谢@RainerWittmann,我实际上是在尝试从firebase数据库中提取数据并将这些数据提供给Scaffold主体中的ListView.builder,但我想我已经弄清楚是什么导致了问题根据 GitHub 上的这个线程:github.com/flutter/flutter/issues/12465
  • 但是,不幸的是我还没有解决它。在我的应用程序中实际发生的是我正在构建 ListView 的状态,我使用 setState() 来初始化变量,当单击 floatingActionButton 时,我正在使用代码“Navigator.push(context, new MaterialPageRoute( builder: (_) => new AddNewBranch(),),);'但是这段代码中的上下文被修改了(因为我已经调用了 setState() 方法),我猜这就是导致问题的原因。但是,我还需要调用 setState() 来根据从 firebase 收到的数据初始化变量。

标签: dart flutter


【解决方案1】:

我想我通过在

中声明 setState() 解决了这个错误
    @override
  Widget build(BuildContext context) {
    setState(() {
      noOfBranches = 2;
    });
    print('noof branches inside widget build = $noOfBranches');
.....
}

现在应用程序运行良好,没有任何问题。 但是,如果有更多建议,我将不胜感激,因为我是编程新手,并且非常乐意了解更多信息。 唯一的问题是 setState() 正在修改上下文,当单击按钮调用另一个小部件时,它会抛出此错误消息。

非常感谢, 鲯鳅。

【讨论】:

    【解决方案2】:

    为什么不在initState 方法中设置noOfBranches 变量?

    @override
    void initState() {
      super.initState();
      noOfBranches = 2;
    }
    

    【讨论】:

    • 谢谢 Rainer,我确实尝试过,但由于只有在下次我回来并再次单击按钮时将小部件引入树时才会调用 initState(),所以它仍然显示'_dependents.isEmpty' 的错误:不正确。这个解决方案似乎适用于我的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2014-03-27
    • 2011-08-29
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多