用Flutter实现弹幕功能,轻松实现虎牙、斗鱼的弹幕效果。

先来一张效果图:

实现原理

弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的弹幕都会在一条直线上,相互覆盖。平移代码如下:

@override

void initState() {

_animationController =

AnimationController(duration: widget.duration, vsync: this)

..addStatusListener((status){

if(status == AnimationStatus.completed){

widget.onComplete("");

}

});

var begin = Offset(-1.0, .0);

var end = Offset(1.0, .0);

_animation = Tween(begin: begin, end: end).animate(_animationController);

//开始动画

_animationController.forward();

super.initState();

}

@override

Widget build(BuildContext context) {

return SlideTransition(

position: _animation,

child: widget.child,

);

}

计算垂直方向的偏移:

_computeTop(int index, double perRowHeight) {

//第几轮弹幕

int num = (index / widget.showCount).floor();

var top;

top = (index % widget.showCount) * perRowHeight + widget.padding;

if (num % 2 == 1 && index % widget.showCount != widget.showCount - 1) {

//第二轮在第一轮2行弹幕中间

top += perRowHeight / 2;

}

if (widget.randomOffset != 0 && top > widget.randomOffset) {

top += _random.nextInt(widget.randomOffset) * 2 - widget.randomOffset;

}

return top;

}

这些准备好后,就是创建一条弹幕了,现创建一条最简单的文字弹幕:

Text(

text,

style: TextStyle(color: Colors.white),

);

效果如下:

创建一条VIP用户的弹幕,其实就是字体变下颜色:

Text(

text,

style: TextStyle(color: Color(0xFFE9A33A)),

)

效果如下:

给文字加个圆角背景:

return Center(

child: Container(

padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3),

decoration: BoxDecoration(

color: Colors.red.withOpacity(.8),

borderRadius: BorderRadius.circular(50)),

child: Text(

text,

style: TextStyle(color: Colors.white),

),

),

);

效果如下:

创建一个送火箭的弹幕:

return Center(

child: Container(

padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3),

decoration: BoxDecoration(

color: Colors.red.withOpacity(.8),

borderRadius: BorderRadius.circular(50)),

child: Row(

mainAxisSize: MainAxisSize.min,

children: [

Text(

text,

style: TextStyle(color: Colors.white),

),

Image.asset("assets/images/timg.jpeg",height: 30,width: 30,),

Text(

"x $count",

style: TextStyle(color: Colors.white, fontSize: 18),

),

],

),

),

);

效果如下:

火箭有点丑了,不过这不是重点。

其实实现弹幕效果没有我开始想的那么简单,过程中也遇到了一些问题,不过好在最终都解决了,献上Github地址:https://github.com/781238222/flutter-do/tree/master/flutter_barrage_sample

如果觉得还不错,给个小小的赞。

交流

Github地址:https://github.com/781238222/flutter-do

170+组件详细用法:http://laomengit.com

总结

到此这篇关于Flutter 实现虎牙/斗鱼 弹幕功能的文章就介绍到这了,更多相关Flutter 实现虎牙斗鱼 弹幕内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕功能相关推荐

  1. flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕效果 | 秒速技术

    老孟导读:用Flutter实现弹幕功能,轻松实现虎牙.斗鱼的弹幕效果. 先来一张效果图: 实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的 ...

  2. java 弹幕 原理_Flutter 实现虎牙/斗鱼 弹幕效果

    老孟导读:用Flutter实现弹幕功能,轻松实现虎牙.斗鱼的弹幕效果. 先来一张效果图: 实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的 ...

  3. Flutter 实现虎牙/斗鱼 弹幕效果

    老孟导读:用Flutter实现弹幕功能,轻松实现虎牙.斗鱼的弹幕效果. 先来一张效果图: 实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的 ...

  4. 直播代码Flutter 实现虎牙/斗鱼 弹幕效果

    实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的弹幕都会在一条直线上,相互覆盖.平移代码如下: @override void initSt ...

  5. Android 获取斗鱼弹幕

    涉及相关的资料可以去斗鱼开发者平台上找 http://dev-bbs.douyutv.com/forum.php 以下内容改编自斗鱼开发者平台上的JAVA版弹幕获取 BarrageActivity.j ...

  6. python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...

    调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...

  7. PHP点歌插件,斗鱼弹幕点歌插件_小葫芦社区_小葫芦插件交流 - Powered by Discuz!

    更新版本:3.3.7更新日期:2017-04-25更新日志:1. 修复 部分斗鱼房间无法连接弹幕的问题(主要是参与主播带你嗨购活动的主播)2. 修复 其他已知问题 更新版本:3.2.16更新日期:20 ...

  8. python 爬取直播弹幕视频_python爬取斗鱼B总直播弹幕

    原博文 2018-07-10 18:00 − 在某群中看到关于弹幕爬取的需求,又因为斗鱼比较OP,就以这个作为切入点. 如果你想了解如何获取弹幕,我的这个例子就可以让你豁然开朗,对于哪些没有开发弹幕的 ...

  9. android 带图片的弹幕,一个可以支持文本,图片,文本+表情的简单弹幕插件

    前言 最近因项目需要,使用canvas做了一个简单的弹幕插件,能满足基本功能, 后期还需要不断完善,有好的建议和想法欢迎提出. 为了做一个弹幕前期调研考察了颇久,首先列一下我需要的功能: 文字弹幕 新 ...

最新文章

  1. asio boost 异步错误处理_boost::ASIO的同步方式和异步方式
  2. mongo在哪创建管理员_如何给mongodb管理员权限
  3. Nacos配置中心原理
  4. Pet Shop4解密配置文件
  5. python cnn_使用python中pytorch库实现cnn对mnist的识别
  6. pythonjs设置_python dom操作
  7. DbEntry在Vs2012里的配置
  8. ubuntu 20.04 安装circos
  9. 单片机编程文件组织形式(个人编程规范)
  10. 损失函数——交叉熵损失函数
  11. 千万不要错过云计算兴起的时代
  12. NOIP2016滚粗记
  13. vep视频转换为mp4文件
  14. comsol APP开发基础功能应用
  15. ENVI操作:监督分类
  16. 最新网上赚钱方法,这四种最靠谱!
  17. 台式计算机内置无线网卡,台式机内置无线网卡和外置的区别
  18. 分布式身份认证——未来信任生态的基石
  19. C++11 随机数学习
  20. 百度又双叒升级烽火算法!一个动作杜绝网站劫持问题!

热门文章

  1. 《麦肯锡精英的48个工作习惯》书评
  2. Juery的基本的基本操作用法
  3. java自动化word报告
  4. 好萌的泰国小萝莉,搞得我也想学uke了
  5. sox和lame音频处理器
  6. 在cmd中使用start运行exe文件闪退问题
  7. 3.24 | Crypto Tech Night第十二期,Web3——属于Gen Z的社交网络时代
  8. 人工智能工具推荐:采集图片神器——后羿采集器
  9. 一文详解IMU模型原理和标定选型
  10. 服务器您的网络已被劫持请立即修复,网页被劫持并跳转到发布网络的修复方法...