我正在努力弄清楚我需要处理什么。因为当我使用它时我得到一个错误
'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);
}
答案 0 :(得分:0)
当你处理 textEditingController 时不要让它成为最终的 并在 didUpdateWidget 中重新初始化了 tectEditingController 以再次重新使用