当前位置: 首页 > news >正文

网站建设哈尔滨app开发2小程序一键开发免费

网站建设哈尔滨app开发2,小程序一键开发免费,制作自己的网站需要什么软件好,网站设计注意事项内容高亮并不陌生#xff0c;特别是在搜索内容页面#xff0c;可以说四处可见#xff0c;就拿掘金这个应用而言#xff0c;针对某一个关键字#xff0c;我们搜索之后#xff0c;与关键字相同的内容#xff0c;则会高亮展示#xff0c;如下图所示#xff1a; 如上的效果…内容高亮并不陌生特别是在搜索内容页面可以说四处可见就拿掘金这个应用而言针对某一个关键字我们搜索之后与关键字相同的内容则会高亮展示如下图所示 如上的效果在Flutter当中实现起来可以说是无比的简单毕竟原生的组件都给我们提供了那就是富文本组件RichText。 针对今天的内容简单的列一个大纲主要内容如下 1、案例简单效果 2、认识RichText 3、文本的高亮实现逻辑 4、高亮组件源码 一、案例简单效果 1、简单的内容高亮展示 2、列表形式内容展示 二、认识RichText 要实现高亮效果那么我们必须了解富文本组件RichText话又说回来什么是富文本呢简单来说它是一种特殊的文本格式比普通文本更加丰富多彩可以包含各种字体、颜色、大小等元素使文本更加生动、有趣比如我们常见的阅读协议等场景均可采用富文本形式这是原生的文本无法实现的效果。 初识构造 构造属性需要注意的是这里的text和文本Text中的text是不一样的文本Text指的是字符串这里的text指的是InlineSpan当然了InlineSpan是抽象基类一般我们使用TextSpan。 RichText({super.key,required this.text,this.textAlign TextAlign.start,this.textDirection,this.softWrap true,this.overflow TextOverflow.clip,this.textScaleFactor 1.0,this.maxLines,this.locale,this.strutStyle,this.textWidthBasis TextWidthBasis.parent,this.textHeightBehavior,this.selectionRegistrar,this.selectionColor,}) : assert(text ! null),assert(textAlign ! null),assert(softWrap ! null),assert(overflow ! null),assert(textScaleFactor ! null),assert(maxLines null || maxLines 0),assert(textWidthBasis ! null),assert(selectionRegistrar null || selectionColor ! null),super(children: _extractChildren(text)); 常见构造属性概述 const TextSpan({this.text,this.children,super.style,this.recognizer,MouseCursor? mouseCursor,this.onEnter,this.onExit,this.semanticsLabel,this.locale,this.spellOut,}) : mouseCursor mouseCursor ??(recognizer null ? MouseCursor.defer : SystemMouseCursors.click),assert(!(text null semanticsLabel ! null)); 属性 类型 概述 textAlign TextAlign 文本对齐方式 TextAlign.left TextAlign.right TextAlign.cente TextAlign.justify TextAlign.start TextAlign.end textDirection TextDirection 文本的方向 TextDirection.ltr TextDirection.rtl overflow TextOverflow 文字溢出的处理方式 TextOverflow.clip剪切溢出的文本填满容器。 TextOverflow.fade将溢出的文本淡化为透明。 TextOverflow.ellipsis使用省略号表示文本已溢出。 TextOverflow.visible呈现容器外溢出的文本 maxLines int 最大行数 textWidthBasis TextWidthBasis 文本的宽度 TextWidthBasis.parent TextWidthBasis.longestLine TextSpan常见属性 属性 说明 text String类型的文本 children 子组件 style TextStyle类型的文本样式可以设置文字的大小、颜色、样式等 recognizer 指定手势交互 recognizer: TapGestureRecognizer()..onTap () {},可以监听点击事件 简单案例 RichText(text: const TextSpan(children: [TextSpan(text: 床前明月光, style: TextStyle(color: Colors.black)),TextSpan(text: 疑是地上霜。, style: TextStyle(color: Colors.red)),TextSpan(text: 举头望明月, style: TextStyle(color: Colors.blueAccent)),TextSpan(text: 低头思故乡。, style: TextStyle(color: Colors.tealAccent))]) 效果 当然了除了上述写法之外也可以使用Text.rich来实现代码如下 const Text.rich(TextSpan(children: [TextSpan(text: 床前明月光, style: TextStyle(color: Colors.black)),TextSpan(text: 疑是地上霜。, style: TextStyle(color: Colors.red)),TextSpan(text: 举头望明月, style: TextStyle(color: Colors.blueAccent)),TextSpan(text: 低头思故乡。, style: TextStyle(color: Colors.tealAccent))])) 三、文本的高亮实现逻辑 RichText可以实现一个富文本展示那么如何利用这个组件实现某个内容高亮展示呢首先我们要明白高亮的内容是不固定的一段内容的每个字符都有可能会高亮所以针对TextSpan我们就需要动态的创建然后动态的改变其样式。 这里的动态也是十分的简单无非就是字符串的截取分别是开头、结尾、和中间三种情况进行截取如下图所示。 当然了需要注意有可能要搜索的这个内容在整个内容中是多处存在的这个时候针对以上的逻辑就需要遍历循环了直至找到最后一个搜索的内容。 主要的逻辑如下 //搜索内容为空if (_searchContent ) {return Text(_content,style: _ordinaryStyle,);}ListTextSpan richList [];int start 0;int end;//遍历进行多处高亮while ((end _content.indexOf(_searchContent, start)) ! -1) {//如果搜索内容在开头位置直接高亮此处不执行if (end ! 0) {richList.add(TextSpan(text: _content.substring(start, end), style: _ordinaryStyle));}//高亮内容richList.add(TextSpan(text: _searchContent, style: _highlightStyle));//赋值索引start end _searchContent.length;}//搜索内容只有在开头或者中间位置才执行if (start ! _content.length) {richList.add(TextSpan(text: _content.substring(start, _content.length),style: _ordinaryStyle));}return RichText(text: TextSpan(children: richList),); 四、高亮组件源码 源码很简单可以结合列表组件或者单独使用当然了有一些特殊需求文字加大或者改变背景等需求都可以进行扩展。 class TextHighlight extends StatelessWidget {final TextStyle _ordinaryStyle; //普通的样式final TextStyle _highlightStyle; //高亮的样式final String _content; //文本内容final String _searchContent; //搜索的内容const TextHighlight(this._content, this._searchContent, this._ordinaryStyle,this._highlightStyle,{super.key});overrideWidget build(BuildContext context) {//搜索内容为空if (_searchContent ) {return Text(_content,style: _ordinaryStyle,);}ListTextSpan richList [];int start 0;int end;//遍历进行多处高亮while ((end _content.indexOf(_searchContent, start)) ! -1) {//如果搜索内容在开头位置直接高亮此处不执行if (end ! 0) {richList.add(TextSpan(text: _content.substring(start, end), style: _ordinaryStyle));}//高亮内容richList.add(TextSpan(text: _searchContent, style: _highlightStyle));//赋值索引start end _searchContent.length;}//搜索内容只有在开头或者中间位置才执行if (start ! _content.length) {richList.add(TextSpan(text: _content.substring(start, _content.length),style: _ordinaryStyle));}return RichText(text: TextSpan(children: richList),);} } 案例Demo很是简单上边是搜索框下面是展示的内容这里就不贴了高亮组件已经给大家提供了大家可以直接复制使用。
http://www.huolong8.cn/news/101129/

相关文章:

  • 网站策划书模板大全私人定制
  • 建设一个电商网站长尾词seo排名
  • 海南澄迈住房和城乡建设厅网站企业网站的制作周期
  • 临沂企业网站建站模板移动吉生活app下载
  • 设计logo网站免费奇米seo专业培训费用
  • 手机建立网站的软件总裁培训班
  • 一般网站建设需求有哪些做网站优化有什么途径
  • 网页设计师常逛网站惠州网站建设是什么意思
  • 网页设计师英语北京做网站优化多少钱
  • seo网站推广策略wordpress修改最大32m
  • 移动互联网网站建设如何对网站进行管理
  • 左侧导航栏网站模板移动端购物网站建设目的
  • 什么是网站反向链接深圳专业网站设计公司哪家好
  • 怎么获得免费网站管家婆客户管理系统
  • 网站例子dedecms图片网站模板
  • 延吉市建设局网站良品铺子网站建设设计
  • 销售型网站怎么做小程序是一种后端微服务
  • 兰州财经大学网站开发与维护做网站手机号抓取的公司
  • 个人网站建立 学生重庆手机网站制作费用
  • 那个网站专门做二手衣服的成都哪家公司做网站比较好
  • 网站如何做关键词引流WordPress来源插件
  • 网站空间费营销qq怎么申请
  • 德州网站建设德州汕头市交通建设网站
  • 设计公司网站推广营销做网站的都是什么专业毕业的
  • 淘宝做个网站多少钱做一个招聘网站需要多少钱
  • vs2013做登录网站上海城乡建设部网站首页
  • 网站开发具体步骤wordpress怎么关注别人
  • 简单商业网站模板做哪类网站
  • 有孩子做的网站wordpress打开速度慢 插件
  • 娄底住房和城乡建设部网站南京微信网站建设哪家好