究竟什么是处置?

时间:2021-04-06 21:15:22

标签: firebase flutter dispose

我正在努力弄清楚我需要处理什么。因为当我使用它时我得到一个错误

'package:flutter/src/widgets/framework.dart': Failed assertion: line 4109 pos 12: '_lifecycleState != _ElementLifecycle.defunct': is not true.

所以这就是为什么我问我需要它来做一些特别的事情吗? 当我从一个页面导航到另一个页面,然后导航到另一个页面,然后又回到第一页时,我收到了这个错误。 我的错误是在文本字段中来自文本字段,我正在废弃我的 texeditingcontroller,但在 dispose 方法中调用 super 之前。但问题是我在一个页面中调用 textediting 控制器,然后在另一个页面中使用这个值并将其设置为 final 。当我在第二页中处理控制器时,我收到了这个错误。所以我需要这个吗??

这是我的代码 在这个 AllFollowersearch 中,我声明了它并将值设置为 TextFormField

class AllFollowersearch extends StatefulWidget {
  static const route = '/Followersearch';
   final String  receverid;

  const AllFollowersearch({Key key, this.receverid}) : super(key: key);

  @override
  _AllFollowersearchState createState() => _AllFollowersearchState();
}

class _AllFollowersearchState extends State<AllFollowersearch> {
  final searchcontroller = new TextEditingController();


  child: TextField(
      controller: searchcontroller,
         decoration: InputDecoration(
          prefixIcon: Icon(
           Icons.search,
            color: Colors.black,
               ),
              border: InputBorder.none,
                hintText: "search...",
                  ),
                     onTap: () {
                        setState(() {
                          isSearching = true;
                                  });
                                }),

  isSearching
                ? Expanded(
                    child: Openallfollower(
                      receiverid: widget.receverid,
                    searchinginput: searchcontroller,
                  ))

在这个类中,我使用 TextEditingController 控制器的值并将其也处理为她

class Openallfollower extends StatefulWidget {
  final TextEditingController searchinginput;
   static const route = '/allfollower';
   final String receiverid;

  const Openallfollower({Key key, this.receiverid,this.searchinginput}) : super(key: key);

  @override
  _OpenallfollowerState createState() => _OpenallfollowerState();
}

@override
  void didUpdateWidget(covariant Openallfollower oldWidget) {
    // TODO: implement didUpdateWidget
    super.didUpdateWidget(oldWidget);
  }

1 个答案:

答案 0 :(得分:0)

当你处理 textEditingController 时不要让它成为最终的 并在 didUpdateWidget 中重新初始化了 tectEditingController 以再次重新使用