首页 > 解决方案 > TextField 导致“查找已停用小部件的祖先是不安全的。” 扑

问题描述

我有一个导致以下错误的 TextField。它仅在我开​​始在 TextField 中输入时触发。我尝试将 Sliverappbar 或 TextField 包装在 Builder 中,但遇到了同样的错误。

======== 小部件库捕获的异常====================================== ================== 在为 FocusManager 分派通知时引发以下断言:查找已停用小部件的祖先是不安全的。

此时小部件的元素树的状态不再稳定。

要在其 dispose() 方法中安全地引用小部件的祖先,请通过在小部件的 didChangeDependencies() 方法中调用dependOnInheritedWidgetOfExactType() 来保存对祖先的引用。

抛出异常时,这是堆栈:#0 Element._debugCheckStateIsActiveForAncestorLookup。(package:flutter/src/widgets/framework.dart:3906:9) #1 Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3920:6) #2 Element.dependOnInheritedWidgetOfExactType (package:flutter/src /widgets/framework.dart:3962:12) #3 MediaQuery.of (package:flutter/src/widgets/media_query.dart:814:38) #4 _InkResponseState._shouldShowFocus (package:flutter/src/material/ink_well.dart :925:44) ... FocusManager 发送通知是:FocusManager#23a1d primaryFocus: FocusNode#4875a([PRIMARY FOCUS]) primaryFocusCreator:

代码如下。

_showsearchfield
                    ? _bottombarisVisible
                    ? SliverAppBar(
                  backgroundColor: twhite,
                  leading: Container(),
                  flexibleSpace: FlexibleSpaceBar(
                    titlePadding: EdgeInsets.only(bottom: 3),
                    title: Container(
                      color: twhite,
                      //actual search box
                      child: Container(
                        height: screenheight*0.057,
                        margin: EdgeInsets.only(
                            left: screenwidth*0.041,
                            right: screenwidth*0.041,
                            top: screenheight*0.027,
                            bottom: screenheight*0.032
                        ),
                        child: TextField(
                          style: MyTextStyle(16, tblack, FontWeight.w600),
                          controller: _mysearchwords,
                          decoration: InputDecoration(
                            enabledBorder: OutlineInputBorder(
                              borderSide: BorderSide(width: 0, ),
                              borderRadius: BorderRadius.circular(5),
                            ),
                            focusedBorder: OutlineInputBorder(
                              borderSide: BorderSide(width: 0, ),
                              borderRadius: BorderRadius.circular(5),
                            ),
                            suffixIcon: InkWell(
                              child:Icon(Icons.close,size: 20,color: tblack,),
                              splashColor: torangesplash,
                              onTap: _clearsearchtext,
                            ),
                            contentPadding: EdgeInsets.only(left: 10),
                            hintText: 'Search',
                            hintStyle: TextStyle(fontSize: 16, color: Colors.black87,fontWeight: FontWeight.w400),
                          ),
                          onSubmitted: (String value) async {
                            
                        ),
                      ),
                    ),
                  ),
                  floating: false,
                  pinned: true,
                )
                    : SliverToBoxAdapter(
                  child: Container(),
                )
                    : SliverToBoxAdapter(
                  child: Container(),
                ),

标签: fluttertextfield

解决方案


我有同样的问题,一个简单的 Flutter 热重启幸运地解决了我的问题


推荐阅读