Flutter如何实现文本滚动高亮效果
Flutter如何实现文本滚动高亮效果
这篇文章主要介绍“Flutter如何实现文本滚动高亮效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter如何实现文本滚动高亮效果”文章能帮助大家解决问题。
功能实现
因为在Text
中会存在两段文本, 所以就不能单只用Text
组件, 而改用Text.rich
. 通过textSpan
生成一个数组然后放到text.rich
中. 所以本文需要处理, 而不是自己一个个拼接, 所以需要先有一个解析的类来负责处理.
需要在项目中加入第三方插件 string_scanner
用于扫描文本.
classStringParser{//导入的文本finalStringcontent;//高亮部分尾部索引,也就是两段的区分位置finalintendIndex;StringParser({requiredthis.content,requiredthis.endIndex});lateStringScanner_scanner;//解析函数InlineSpanparser(){_scanner=StringScanner(content);parseContent();finalList
之后需要定义一个高亮的数据类型, 用于方便修改之后想要高亮的文本样式和默认样式.
classSpanBean{SpanBean(this.start,this.end);finalintstart;finalintend;Stringtext(Stringsrc){returnsrc.substring(start,end);}TextStylegetstyle=>TextStyleSupport.highLightStyle;}classTextStyleSupport{staticconstdefaultStyle=TextStyle(color:Colors.black,fontSize:36);staticconsthighLightStyle=TextStyle(color:Colors.green,fontSize:36);}
至此文本高亮和非高亮处理完成, 只需要在文件中导入后使用.
滚动效果则需要实现一个play
函数里通过 Future.delayed
来控制延时递归执行.
_starPlay(flag){//flag用于判断是执行还是暂停if(this.endIndex==content.length+1||!flag){return;}parser=StringParser(content:content,endIndex:this.endIndex++);span=parser.parser();setState((){});Future.delayed(Duration(milliseconds:100)).then((value){_starPlay(this.flag);});}
最终在文件里的代码则是
import'package:flutter/material.dart';import'string_parser.dart';voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{//Thiswidgetistherootofyourapplication.@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',home:MyHomePage(),);}}classMyHomePageextendsStatefulWidget{MyHomePage({Key?key}):super(key:key);@override_MyHomePageStatecreateState()=>_MyHomePageState();}class_MyHomePageStateextendsState
实现效果:
关于“Flutter如何实现文本滚动高亮效果”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
推荐阅读
-
flutter怎么封装点击菜单工具栏组件checkBox多选版
flutter怎么封装点击菜单工具栏组件checkBox多选版这篇...
-
flutter怎么封装单选点击菜单工具栏组件
flutter怎么封装单选点击菜单工具栏组件这篇“flutter怎...
-
Android与Flutter之间如何实现通信
Android与Flutter之间如何实现通信这篇“Android...
-
怎么在Flutter中获取设备标识符
怎么在Flutter中获取设备标识符这篇文章主要介绍了怎么在Flu...
-
Flutter怎么使用AnimatedBuilder实现动效复用
Flutter怎么使用AnimatedBuilder实现动效复用这...
-
Flutter怎么使用RepositoryProvider解决跨组件传值问题
Flutter怎么使用RepositoryProvider解决跨组件传值问题...
-
怎么用web3dart为flutter应用生成以太坊地址
怎么用web3dart为flutter应用生成以太坊地址本篇内容介...
-
Flutter多平台适配机制的示例分析
-
flutter是什么
-
使用Dart开发Flutter应用的技巧有哪些
使用Dart开发Flutter应用的技巧有哪些小编给大家分享一下使...