【发布时间】:2020-06-23 01:04:47
【问题描述】:
当我点击 textField 时,我遇到了小部件重建的问题。 以及释放键盘时
我检查了this answer,但它不起作用。
这是小部件
class ListSearch extends StatefulWidget {
@override
_ListSearchState createState() _ListSearchState();
}
class _ListSearchState extends State<ListSearch> {
@override
Widget build(BuildContext context) { print('rebuild....');
return MaterialApp(
theme: ThemeData(fontFamily: "Lato"),
home: Scaffold(
appBar: AppBarBuilder.getAppBar(context, "Listings", null),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
TextField(
maxLines: 1,
textInputAction: TextInputAction.search,
onChanged: (val) {applyFilter(val); },
cursorColor: Colors.blue,
controller: searchController,
style: TextStyle(
color: Colors.black,
fontSize: 16.0,
),
decoration: InputDecoration(
focusedBorder: InputBorder.none,
border: InputBorder.none,
alignLabelWithHint: false,
hintText: "Search",
),
),
Container(height: 600.0, child: buildLists()),
],
),
),
),
);
}
}
有什么解决办法吗?
更新
当我导航到这个页面时,它会生成两次
Navigator.of(context).push(MaterialPageRoute(builder: (context) => ListSearch()));
【问题讨论】:
-
我认为您应该使用 TextEditController 的控制器而不是 onChanged:只需将 controller.text 传递给 applyFilter(controller.text) 。
-
@ShrutiRamnandanSharma onchange 不会在点击时调用