Flutter自定义AppBar&自定义解析单标签HTML富文本

本文介绍了如何在Flutter中自定义AppBar以满足特定布局需求,包括搜索栏、TabBar和多个图标按钮。同时,文章还分享了一个投机方法,将含有单标签HTML文本转换为富文本,实现特定字符颜色的改变。通过正则表达式分割文本并利用TextSpan创建富文本。
摘要由CSDN通过智能技术生成

Flutter自定义AppBar&自定义解析单标签HTML富文本

初学Flutter,为了完成一个带有搜索栏、TabBar以及多个图标按钮的布局可以说是绞尽脑汁。原生的AppBar虽然拥有bottom属性,常用的方法也是配合TabBar一起使用,但是并没有能修改顶部的对应的属性,只能设置一个标题栏而已。对于flexibleSpace这个属性,是指处于AppBar和bottom之间的一个和AppBar等高的控件,大概关系是这样的:
在这里插入图片描述而为了达到这种效果:
在这里插入图片描述

显然是不太合适的,除非能把AppBar的title替换掉。出于种种原因,还是下定决心自定义一个自己的AppBar,无非就是跟源码照猫画虎,改改属性布局嘛

大概分解一下这个AppBar,有这么几部分,首先是一个一列两行的结构,第一行分为两列,左侧是一个按钮,图标也可以,反正也是随时都可以添加手势识别,右侧是一个TextField,在TextField的右侧覆盖了一个图标(按钮),反正我的第一反应是TextField和右侧图标是个Stack布局,这样实现起来应该也比较容易。

第二行就比较简单了,可以直接用TabBar。那来看看代码。

class MyAppBarShow extends StatefulWidget implements PreferredSizeWidget{
   

  //tabbar的controller,应与TabBarView的是同一个保证同时滑动
  final TabController tabController;
  //tabbar标题数据
  final List tabs;
  //根据TabBar页面变化选择是否显示筛选按钮
  final bool showButton;
  //左侧 "中"
  final Image leftIcon;
  //搜索栏叠加的麦克风
  final Image rightIcon;
  //筛选按钮,叠加在tabbar上
  final Image tabRightIcon;
  //输入框controller,获取输入文字和预设文字
  final TextEditingController textEditingController;

  MyAppBarShow({
   
    Key key,
    this.tabController,
    this.tabs,
    this.showButton,
    @required this.textEditingController,
    this.leftIcon,
    this.rightIcon,
    this.tabRightIcon,
  }) : super(key: key);

  @override
  _MyAppBarState2 createState() => _MyAppBarState2();

  @override
  Size get preferredSize => new Size.fromHeight(kToolbarHeight);
}

首先肯定是一个StatefulWidget,要根据各种动作改变自身状态。而实现PreferredSizeWidget是因为在Scaffold中appBar的要求。对

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值