本文使用tabbar实现顶部横向滚动多个菜单。

实现tabbar搜索框功能加功能按钮。

话不多说,上代码!

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_zhihu/kits/color/colorKit.dart'; class TestPage extends StatefulWidget {
@override
_TestPageState createState() => _TestPageState();
} class _TestPageState extends State<TestPage>
with SingleTickerProviderStateMixin {
TabController _tabController; //tabbar控制器,控制顶部tabbar切换
//搜索框控制器,适用于在全局监听搜索框内容。如果不需要全局监听,只使用onChanged onSubmitted即可
TextEditingController _textController;
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(length: 9, vsync: this);//初始化控制器
_textController = TextEditingController();
_textController.addListener(() {
print('_textController+${_textController.text}');
});
} @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Icon(
Icons.home,
),
flex: 0,
),
Expanded(
child: Container(
height: 30,
margin: EdgeInsets.fromLTRB(10, 5, 10, 0),
child: TextField(
controller: _textController,
decoration: InputDecoration(
fillColor: ColorKit.hexToColor('#F6F6F6'),
filled: true,
contentPadding: EdgeInsets.fromLTRB(10, 0, 10, 0),
hintText: '请输入搜索内容',
hintStyle: TextStyle(fontSize: 13),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
borderSide: BorderSide.none,
),
),
onChanged: (text){
print('onchanged+$text');
},
onSubmitted: (text){
print('onSubmitted+$text');
},
),
),
flex: 1,
),
Expanded(
child: Icon(Icons.pages),
flex: 0,
),
],
),
bottom: PreferredSize(
preferredSize: Size.fromHeight(35),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
flex: 1,
child: Container(
height: 48,
child: TabBar(
indicatorSize: TabBarIndicatorSize.label,
isScrollable: true,
controller: _tabController,
tabs: [
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
Container(
width: 60,
alignment: Alignment.center,
child: Text('退机'),
),
],
),
)),
Expanded(flex: 0, child: Container(
margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
child: Icon(Icons.ac_unit),
))
],
),
),
),
//顶部tabbar页面内容
body: TabBarView(
controller: _tabController,//tabbar控制器
children: [
Text('111111111'),
Text('2222222222'),
Text('333333333'),
Text('111111111'),
Text('2222222222'),
Text('333333333'),
Text('111111111'),
Text('2222222222'),
Text('333333333')
],
),
);
}
}

最新文章

  1. php抽奖代码
  2. [实现]Javascript代码的另一种压缩与加密方法——代码图片转换
  3. JavaWeb学习总结(四)—ServletConfig和ServletContext
  4. Ansible :一个配置管理和IT自动化工具
  5. struts2 类型转换
  6. 十分钟了解MVVMLight
  7. 201521123073 《Java程序设计》第5周学习总结
  8. [C#学习笔记1]用csc.exe和记事本写一个C#应用程序
  9. 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
  10. 20165321 学习基础与C语言学习心得
  11. STL 2&mdash;迭代器相关运算&mdash;&mdash;advance(),distance(),next(),prev()
  12. linux导出、导入sql
  13. Using shared access signatures (SAS) From Microsoft
  14. XV6操作系统代码阅读心得(二):进程
  15. go grpc
  16. [国家集训队]最长双回文串 manacher
  17. HData——ETL 数据导入/导出工具
  18. [CVPR2017]Online Video Object Segmentation via Convolutional Trident Network
  19. JDK的详细安装步骤
  20. [USACO09MAR]Cleaning Up

热门文章

  1. mac使用expect登录跳板机后的机器
  2. java-javaSE-泛型和反射
  3. 【转】【善用佳软】文件复制软件评测:FastCopy、TeraCopy、ExtremeCopy、Supercopier
  4. go开发框架推荐
  5. 剑指 Offer II 二分查找
  6. hadoop集群搭建之测试集群,配置历史服务器,日志聚集,时间同步
  7. 调度器46—tick模式
  8. Outlook怎么合并相同邮件?设置Outlook邮件为对话模式
  9. SQL Server【提高】事务
  10. C语言中的转义字符\b的含义