flutter开发实战-实现marquee根据文本长度显示文本跑马灯效果
flutter开发实战-实现marquee文本跑马灯效果
最近开发过程中需要marquee文本跑马灯效果,这里使用到了flutter的插件marquee
效果图如下


一、marquee
1.1 引入marquee
在pubspec.yaml中引入marquee
# 跑马灯效果marquee: ^2.2.3
1.2 marquee使用
marquee使用也是非常方便的。比如直接指定文本text
Marquee(text: 'flutter开发实战-实现marquee文本跑马灯效果',
)
或者设置更多属性值
Marquee(// 文本text: '实现marquee文本跑马灯效果,这里是一传长文本',// 文本样式style: TextStyle(fontWeight: FontWeight.bold),// 滚动轴:水平或者竖直scrollAxis: Axis.horizontal,// 轴对齐方式startcrossAxisAlignment: CrossAxisAlignment.start,// 空白间距blankSpace: 20.0,// 速度velocity: 100.0,// 暂停时长pauseAfterRound: Duration(seconds: 1),// startPaddingstartPadding: 10.0,// 加速时长accelerationDuration: Duration(seconds: 1),// 加速CurveaccelerationCurve: Curves.linear,// 减速时长decelerationDuration: Duration(milliseconds: 500),// 减速CurvedecelerationCurve: Curves.easeOut,
)
二、根据文本宽度是否需要跑马灯效果
根据Text文本的大小判断是否需要进行显示跑马灯效果,获取文本的大小,需要TextPainter来获取Size
TextPainter查看:https://blog.csdn.net/gloryFlow/article/details/132198113
2.1 根据获取的文本宽度确定是否显示跑马灯效果
判断计算的文本宽度是否超出指定的ContainerWidth,来确定是否显示Marquee
代码如下
import 'package:flutter/material.dart';
import 'package:marquee/marquee.dart';typedef MarqueeBuilder = Marquee Function(BuildContext context, String text, TextStyle textStyle);
typedef TextBuilder = Text Function(BuildContext context, String text, TextStyle textStyle);class MarqueeText extends StatelessWidget {final String text;final TextStyle textStyle;final double containerWidth;final TextBuilder textBuilder;final MarqueeBuilder marqueeBuilder;const MarqueeText({Key? key,required this.marqueeBuilder,required this.textBuilder,required this.text,required this.textStyle,required this.containerWidth}): super(key: key);Size calculateTextSize(String text, TextStyle style) {final TextPainter textPainter = TextPainter(text: TextSpan(text: text, style: style),maxLines: 1,textDirection: TextDirection.ltr)..layout(minWidth: 0, maxWidth: double.infinity);return textPainter.size;}Widget build(BuildContext context) {final textWidth = this.calculateTextSize(this.text, this.textStyle).width;return textWidth < this.containerWidth? this.textBuilder(context, text, textStyle): this.marqueeBuilder(context, text, textStyle);}
}
2.2 使用该自定义的Widget
下面我这里使用这个跑马灯的Widget
代码如下
Container(width: size.width,height: size.height,alignment: Alignment.center,color: Colors.greenAccent,// child: LoadingWidget(bgColor: Colors.blueGrey,),child: MarqueeText(containerWidth: 300,text: "如果你不相信努力和时光,那么时光第一个就会辜负你。不是因为有希望才去努力,而是努力了,才能看到希望。",textStyle: TextStyle(fontSize: 25,fontWeight: FontWeight.w400,fontStyle: FontStyle.normal,color: Colors.redAccent,decoration: TextDecoration.none,),marqueeBuilder: (context, text, textStyle) => Marquee(text: text,style: textStyle,scrollAxis: Axis.horizontal,crossAxisAlignment: CrossAxisAlignment.start,blankSpace: 20.0,velocity: 100.0,pauseAfterRound: Duration(milliseconds: 500),showFadingOnlyWhenScrolling: true,fadingEdgeStartFraction: 0.1,fadingEdgeEndFraction: 0.1,startPadding: 10.0,accelerationDuration: Duration(milliseconds: 100),accelerationCurve: Curves.linear,decelerationDuration: Duration(milliseconds: 100),decelerationCurve: Curves.easeOut,textDirection: TextDirection.ltr,),textBuilder: (context, text, textStyle) => Text(text,style: textStyle,),),),
三、小结
flutter开发实战-实现marquee根据文本长度显示文本跑马灯效果。通过TextPainter计算文本内容的宽度与ContainerWidth进行对比确定是否需要显示marquee。
学习记录,每天不停进步。
相关文章:
flutter开发实战-实现marquee根据文本长度显示文本跑马灯效果
flutter开发实战-实现marquee文本跑马灯效果 最近开发过程中需要marquee文本跑马灯效果,这里使用到了flutter的插件marquee 效果图如下 一、marquee 1.1 引入marquee 在pubspec.yaml中引入marquee # 跑马灯效果marquee: ^2.2.31.2 marquee使用 marquee使用也是…...
8.10论文阅读
文章目录 The multimodal MRI brain tumor segmentation based on AD-Net摘要本文方法损失函数 实验结果 max-vit - unet:多轴注意力医学图像分割摘要本文方法实验结果 The multimodal MRI brain tumor segmentation based on AD-Net 摘要 基于磁共振成像(MRI)的多模态胶质瘤…...
【计算机网络笔记】第一章
1、计算机网络定义 计算机网络主要是由一些通用的、可编程的硬件(包含CPU、计算机、手机、智能电器…)互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能…...
开源力量再现,国产操作系统商业化的全新探索
文章目录 1. 开源运动的兴起2. 开源力量的推动3. 国产操作系统的崭露头角3.1 国产操作系统有哪些 4.国产操作系统的商业化探索5.开源力量对国产操作系统商业化的推动 操作系统作为连接硬件、中间件、数据库、应用软件的纽带,被认为是软件技术体系中最核心的基础软件…...
uni-app uView自定义底部导航栏
因项目需要自定义底部导航栏,我把它写在了组件里,基于uView2框架写的(vue2); 一、代码 在components下创建tabbar.vue文件,代码如下: <template><view><u-tabbar :value"c…...
效率指数级提升的Intellij IDEA快捷键集合
温馨提示:全文有18个小技巧,为了阅读体验,可以直接先看文章目录。 1,打开一个文件中的所有方法展示框 CtrlF12 Alt7 2,打开一个类的所有使用位置 AltF7 3,打开一个类在项目使用的位置 CtrlAltF7 4&#…...
TS学习05-泛型
泛型 目的:可重用性 支持当前数据类型,也支持未来的数据类型。 提供灵活的功能 无法创建泛型枚举和泛型命名空间。 function identity(arg: any): any { return arg }function identity<T>(arg: T) : T { return arg}使用any类型会导致这个函数可以…...
windos wsl2 docker unix:///var/run/docker.sock
解决方案 问题如下 rootDESKTOP-VM0J0I4:~# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?启动下docker sudo service docker startcsdn 等风来不如迎风去 htp://t.csdn.cn/Gh365...
前端面试经典手写题
1、手写Promise class Promise2 {state "pending";callbacks [];constructor(fn) {fn(this.resolve.bind(this), this.reject.bind(this));}resolve(result) {if (this.state ! "pending") return;this.state "fullFilled";nextTick(() > …...
Tomcat 部署及优化
Tomcat概述 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。在中小型系统和并发访问用户不是很…...
Selenium入门详细教程+实例演示
目录 1.Selenium概述 1.1什么是Selenium 1.2Selenium的优势 1.3Selenium WebDriver原理 2.Selenium环境搭建 3.Selenium 简单示例 4.八大元素定位 4.1定位方式 4.2定位方式的用法 5.Selenium API 5.1WebDriver 常用 API 5.2WebElement 常用 API 5.3代码示例 6.元素等待机…...
ATFX汇评:美国7月CPI数据即将揭晓,市场预期将有所反弹
ATFX汇评:今日20:30,美劳工部将公布7月未季调CPI年率,前值为3%,预期值3.3%;同一时间公布7月未季调核心CPI年率,前值为4.8%,预期值持平;至8月5日当周初请失业金人数也将同时发布&…...
23、springboot日志使用入门-- SLF4J+Logback 实现(springboot默认的日志实现),日志打印到控制台及日志输出到指定文件
springboot日志使用入门 ★ 典型的Spring Boot日志依赖: spring-boot-start.jar -- spring-boot-starter-logging.jar (Spring Boot的日志包)-- logback(core、classic)-- log4j-to-slf4j.jar-- jul-to-slf4j.jar就是springboo…...
【uniapp】 软键盘弹出后fixed定位被顶上去问题
问题描述 当手机设计的导航栏为fixed定位上去时,输入框获取焦点就会把顶部自定义的导航栏顶到上面去,如下图所示 解决办法 输入框设置 :adjust-position“false” <input type"text" :adjust-position"false" focus"i…...
HarmonyOS应用开发者基础认证考试题库
此博文为HarmonyOS应用开发者基础认证考试的最后的大考,要求100分取得90分方可获取证书、现将考试的题库进行分享,希望能帮到大家。但是需要注意的是,题库会不定时的进行题目删减,但是大概的内容是不会进行改变的。真心希望这篇博…...
FANUC机器人SRVO-105和SRVO-067故障报警原因分析及处理方法
FANUC机器人SRVO-105和SRVO-067故障报警原因分析及处理方法 如下图所示,公司的一台机器人在正常工作时突然报警SRVO-105门打开或紧急停止,同时还有SRVO-067 OHAL2报警(G:1 A:2),按Reset键无法消除报警, 那么遇到这种情况,首先,我们来看一下报警说明书上的解释: 首先…...
在vue中Antv G2 折线图如何添加点击事件获取折线上点的值
在项目中有个需求是点击折线图的点,获取当前点的信息,其它图形都可以参考相关的API获取到,但area做的折线图怎么都获取不到点击的信息,只能获取全部的信息,最终解决如下: 实现思路 用户的鼠标在折线图上移…...
深度学习中训练、推理和验证分别都是什么意思
在深度学习中,推理(Inference)、训练(Training)和验证(Validation)是三个关键概念,它们分别表示了不同的阶段和任务: 训练(Training):…...
C语言规范
C语言规范 1.头文件 若包含了头文件aa.h,则就引入了新的依赖:一旦aa.h被修改,任何直接和间接包含aa.h代码都会被重新编译。如果aa.h又包含了其他头文件如bb.h,那么bb.h的任何改变都将导致所有包含了aa.h的代码被重新编译&#x…...
Express中间件
1.创建最基本的中间件 const express require(express); const send require(send);const app express()const mw function (req, res, next) {console.log(middleware);// 一定要调用next() 把流转关系交给下一个中间件或路由next() }app.listen(80, () > {console.l…...
Linux内核中的命名空间详解
Linux内核中的命名空间详解 引言 命名空间(Namespace)是Linux内核中实现资源隔离的重要机制,它为容器技术提供了基础支持。通过命名空间,不同的进程可以看到不同的系统视图,实现了进程间的隔离。本文将深入探讨Linux内…...
何日得遂田圆乐,睡到人间饭熟时
何日得遂田圆乐,睡到人间饭熟时女儿三岁,去年玩我手机,摔破屏幕,于是,拼㙍(duo)㙍(duo)上网购唱戏机,内存SD卡,上有视频,这样代替手机,手机替代品…...
Diff Checker:3个你没想到的文本对比高效技巧
Diff Checker:3个你没想到的文本对比高效技巧 【免费下载链接】diff-checker Desktop application to compare text differences between two files (Windows, Mac, Linux) 项目地址: https://gitcode.com/gh_mirrors/di/diff-checker 你是否曾经为了找出两份…...
vLLM-v0.17.1实战体验:3步搭建大模型API服务,实测推理速度翻倍
vLLM-v0.17.1实战体验:3步搭建大模型API服务,实测推理速度翻倍 1. vLLM框架简介与核心优势 vLLM是一个专为大语言模型推理优化的高性能服务框架,由加州大学伯克利分校Sky Computing Lab开发并开源。最新发布的v0.17.1版本在推理速度、内存管…...
Windows系统优化终极指南:揭秘WinUtil如何让你的电脑焕然一新
Windows系统优化终极指南:揭秘WinUtil如何让你的电脑焕然一新 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌倦了每次重…...
【无线通信】邻道功率比(ACPR)的测量与优化实战指南
1. 邻道功率比(ACPR)到底是什么? 第一次听说ACPR这个术语时,我也是一头雾水。直到有次在现场调试5G基站,发现隔壁频段的设备总是莫名其妙掉线,才真正理解它的重要性。简单来说,**邻道功率比&…...
Qwen3.5-4B-Claude-Opus开源大模型教程:Web镜像安全配置最佳实践
Qwen3.5-4B-Claude-Opus开源大模型教程:Web镜像安全配置最佳实践 1. 模型与镜像概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该版本以…...
3大难题如何破解:猫抓浏览器资源嗅探扩展终极指南
3大难题如何破解:猫抓浏览器资源嗅探扩展终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catchÿ…...
Huntarr实战案例:如何从零搭建完整的媒体自动化系统
Huntarr实战案例:如何从零搭建完整的媒体自动化系统 【免费下载链接】Sonarr-Hunter Assists Sonarr to check for missing TV Shows 项目地址: https://gitcode.com/gh_mirrors/so/Sonarr-Hunter Huntarr是一款强大的媒体自动化工具,能够帮助用户…...
Asian Beauty Z-Image Turbo开箱即用:浏览器访问即启东方人像生成服务
Asian Beauty Z-Image Turbo开箱即用:浏览器访问即启东方人像生成服务 1. 项目简介 Asian Beauty Z-Image Turbo是一款专注于东方美学人像生成的本地化工具,基于通义千问Tongyi-MAI Z-Image底座模型,结合专门训练的Asian-beauty权重开发而成…...
