亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter如何實現虎牙/斗魚彈幕功能

發布時間:2020-08-04 10:09:49 來源:億速云 閱讀:172 作者:小豬 欄目:移動開發

這篇文章主要為大家展示了Flutter如何實現虎牙/斗魚彈幕功能,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

先來一張效果圖:

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),
);

效果如下:

Flutter如何實現虎牙/斗魚彈幕功能

創建一條VIP用戶的彈幕,其實就是字體變下顏色:

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

效果如下:

Flutter如何實現虎牙/斗魚彈幕功能

給文字加個圓角背景:

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),
 ),
 ),
);

效果如下:

Flutter如何實現虎牙/斗魚彈幕功能

創建一個送火箭的彈幕:

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: <Widget>[
  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),
  ),
  ],
 ),
 ),
);

效果如下:

Flutter如何實現虎牙/斗魚彈幕功能

火箭有點丑了,不過這不是重點。

以上就是關于Flutter如何實現虎牙/斗魚彈幕功能的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南雄市| 凤庆县| 莱州市| 子长县| 阿拉善左旗| 峨眉山市| 高雄县| 凉山| 旬邑县| 济源市| 蓝山县| 龙泉市| 安平县| 汨罗市| 斗六市| 抚松县| 九龙坡区| 肥乡县| 民权县| 贡觉县| 东乌珠穆沁旗| 临沧市| 玉溪市| 阿勒泰市| 缙云县| 泗阳县| 虎林市| 柳林县| 鄂温| 屯昌县| 浙江省| SHOW| 万盛区| 辉县市| 五常市| 新源县| 邹城市| 沽源县| 高要市| 塘沽区| 阳新县|