老孟导读:用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交流群(微信:laomengit)。

同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。

Flutter生态建设离不开你我他,需要大家共同的努力,点赞也是其中的一种,如果文章帮助到了你,希望点个赞。

转载自:https://www.cnblogs.com/mengqd/p/12694159.html

flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕效果 | 秒速技术相关推荐

  1. flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕功能

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

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

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

  3. Flutter使用插件flutter_staggered_grid_view实现分页瀑布流效果

    直接我的博客链接了 Flutter使用插件flutter_staggered_grid_view实现分页瀑布流效果

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

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

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

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

  6. Android 获取斗鱼弹幕

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

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

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

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

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

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

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

最新文章

  1. Faster R-CNN 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文笔记
  2. MySQL里面json_MySQL中的JSON
  3. 造轮子-AgileConfig一个基于.NetCore开发的轻量级配置中心
  4. 信息学奥赛一本通(2066:【例2.3】买图书)
  5. 开源网络数据平面生态:软件正在吞食整个世界
  6. 黑客新技术在ATM钻洞就让其吐钱
  7. Visual Studio Code compile error - launch.json must be configured...
  8. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  9. linux cxf服务端,Apache CXF 框架应用实战
  10. 提升手机麦克风音量_【奇酷小技巧】教你无需ROOT增大话筒、听筒和外放声音!...
  11. 2020 BAT/大厂/银行 Java后端开发 校招实习生要求
  12. 【网单服务端】卡丁车深海之城单机游戏服务端+使用说明
  13. 多点多地网络改造方案
  14. 使用 qrcodejs2 生成二维码详细API和参数
  15. 电子商务认证机构立法相关问题研究
  16. the connected emulator is a j-link clone
  17. [转]谈NAND Flash的底层结构和解析
  18. tomcat并发量怎么看
  19. Outlook延迟发送邮件(office2010 outlook日文版)
  20. 树莓派控制超声波模块

热门文章

  1. [CentOS Python系列] 四.阿里云服务器CentOS连接远程MySQL数据库及pymsql
  2. Python之每个人都应该知道的30个一行代码程序
  3. 144. Binary Tree Preorder Traversal 二叉树的前序遍历
  4. 【内核驱动】 内核驱动中添加系统调用
  5. 【Linux系统编程】进程的控制:结束进程、等待进程结束
  6. [Qt教程] 第11篇 2D绘图(一)绘制简单图形
  7. 51单片机的复位引脚_51单片机复位电路工作原理
  8. python如何计算分子描述符_Python——描述符(descriptor)解密
  9. python中的super用法详解_【Python】【类】super用法详解
  10. 每天一道LeetCode-----两个有序数组合并后的第K个数