android - 在 SearchDelegate Flutter 上添加 TabBar
问题描述
我正在尝试在 Search Delegate 上添加一个标签栏。我想在同一个搜索屏幕上显示产品和用户配置文件的结果。我试图从父类中获取一个控制器并在委托类中实现,但没有发生任何事情(我没有收到任何错误)
目前,我的问题是我想重建构建建议小部件,但我不知道如何做到这一点。因为选项卡按钮小部件具有不同的构建上下文,所以我无法重建 Suggestion 小部件。希望你理解请忽略我的语法错误
class CustomSearchDelegate extends SearchDelegate {
final TabController tabController;
CustomSearchDelegate(this.tabController);
var currentIndex = 0;
List<Widget> tabs = [Text("Tab 1"), Text("Tab 2")];
@override
List<Widget> buildActions(BuildContext context) {
return [
Icon(Icons.clear),
];
// TODO: implement buildActions
throw UnimplementedError();
}
@override
Widget buildLeading(BuildContext context) {
return Container();
// TODO: implement buildLeading
throw UnimplementedError();
}
@override
Widget buildResults(BuildContext context) {
return Container();
// TODO: implement buildResults
throw UnimplementedError();
}
@override
PreferredSizeWidget buildBottom(BuildContext context) {
return PreferredSize(
preferredSize: const Size.fromHeight(50.0),
child: StatefulBuilder(
builder: (context, setState) => DefaultTabController(
length: 2,
child: TabBar(
onTap: (index) {
setState(() {
currentIndex = index;
});
},
indicatorColor: Colors.red,
tabs: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 15),
child: Text(
"Products",
style: Theme.of(context).textTheme.headline6,
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 15),
child: Text(
"Users",
style: Theme.of(context).textTheme.headline6,
),
),
],
),
),
));
}
@override
Widget buildSuggestions(BuildContext context) {
final categoriesList =
Provider.of<PopularServiceList>(context).dummy.where((element) {
return element.title.toLowerCase().contains(query.toLowerCase());
});
return StatefulBuilder(
builder: (context, setState) {
return tabs[currentIndex];
},
);
throw UnimplementedError();
}
}
解决方案
推荐阅读
- vba - 在 VBA 中打印 SELECT 查询的结果 | 微软访问
- regex - Hive Regex_replace 给出了无法编译正则表达式模式:错误
- reactjs - React,如何防止在拖动后执行单击事件?
- scala - 如何组合没有公共列的数据框?
- android - 实时排序firebase控制台面板
- python - 使用循环将文本添加到 tkinter
- javascript - 如何在创建另一个对象后阻止原型中覆盖的函数的参数
- node.js - AWS Amplify 模拟功能
- php - 如何从 Viva Wallet 获取 OAuth 2 访问令牌
- mysql - 在 MySQL 中选择项目