【发布时间】:2022-11-19 19:29:07
【问题描述】:
我已将我的搜索页面分成多个小部件。
- 搜索应用栏
- 搜索输入(文本字段)
- SearchFeed(用于显示结果)
String? query = null; @override void initState() { super.initState(); GoogleAds().showInterstitialAd(); } void searchQuery(String query) { if (this.query != query) { setState(() { this.query = query; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: PreferredSize( preferredSize: Size.fromHeight(100), child: Column( children: [ SizedBox(height: 50), SearchAppbar( callBack: (query) { searchQuery(query); }, ), ], ), ), body: query != null ? SearchFeed(query: query!) : Container(), ); } }在我的搜索应用栏中(连续):
SearchInput(searchController: searchController), TextButton( onPressed: () { widget.callBack(searchController.text); }, child: const Text( "search", style: TextStyle( color: Colors.black, fontSize: 14, fontWeight: FontWeight.bold, ), ),搜索输入只是一个带有
TextEditingController的文本字段。问题是如果用户搜索一个词,说“你好”我得到的结果是正确的。但是,如果用户使用退格键清除文本字段并写入 world,我需要显示新结果。 在 SearchFeed 的 initState 中,我正在记录结果但什么也没得到。 SearchFeed 应该调用 api。如何将新的搜索查询发送到搜索提要?
【问题讨论】:
-
你也可以包括 searchQuery 吗?