第三篇-用Flutter手撸一个抖音国内版,看看有多炫

Flutter 仿抖音 TikTok 上下滑动 播放视频 Flutter 仿抖音 TikTok 上下滑动 播放视频UI框架,视频播放使用 video_player。1.上下滑动自动播放切换视频,loading 封面图占位。2.全屏播放横竖屏切换。 阅读详情

前言

前一篇已经开发了大部分框架,包含视频上下滑动播放,这次将上次未完成的数据显示友好显示,以及底部音乐走马灯特效,另外优化了加载数据的bug,在dart语言里 & 会自动变成&  也不知道这个bug啥时候修复哈.

本系列会持续更新,将各个模块及功能持续完善.

 

修复Dart语言 URL显示错误.

暂时只能这样替换了 

1

url = url.replaceAll('&', '&'),

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

getVideos(BillboardData v) async {

  try {

    var url = v.link.split("/")[5];

    var response = await http.get(

      api.video + url + "&dytk",

      headers: api.headers,

    );

    VideoData videoData = VideoData.fromJson(jsonDecode(response.body));

    //获取无水印的视频地址

    api.getRedirects(videoData.itemList[0].video.playaddr.uri).then((url) => {

          url = url.replaceAll('&', '&'),

          if (url != '')

            {

              videos.add(VideoItem(

                data: videoData,

                videourl: url,

              )),

              //print(url),

            }

        });

  } catch (ex) {

    print(ex);

  }

}

  

对数据格式化

 先引用 import 'package:flutter_money_formatter/flutter_money_formatter.dart';其次按以下方法

1

2

3

4

5

FlutterMoneyFormatter fmf =

    FlutterMoneyFormatter(amount: double.parse(widget.favorite.toString()));

 

FlutterMoneyFormatter fmf2 =

    FlutterMoneyFormatter(amount: double.parse(widget.comments));

显示的位置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

return Align(

       alignment: Alignment.bottomRight,

       widthFactor: 100.0,

       child: Column(

         mainAxisAlignment: MainAxisAlignment.end,

         mainAxisSize: MainAxisSize.min,

         children: <Widget>[

           _getFollowAction(),

           _getSocialAction(

               icon: DouyinIcons.heart,

               title: '${fmf.output.compactNonSymbol}'),

           _getSocialAction(

               icon: DouyinIcons.chat_bubble,

               title: '${fmf2.output.compactNonSymbol}'),

           _getSocialAction(

               icon: DouyinIcons.reply, title: '分享', isShare: true),

           _getMusicPlayerAction()

         ],

       ));

 }

底部音乐名字走马灯特效

先引入 import 'package:marquee_widget/marquee_widget.dart';  

1

2

3

4

5

6

7

8

9

10

11

  Container(

    width: 150,

    child: Marquee(

      child: Text('${widget.musicName} - ${widget.authorName}'),

      direction: Axis.horizontal,

      textDirection: TextDirection.ltr,

      animationDuration: Duration(seconds: 1),

      directionMarguee: DirectionMarguee.oneDirection,

    ),

  ),

])

这里需要设置width,否则没有效果,切记.

 

音乐旋转效果

 

 先使用  SingleTickerProviderStateMixin,当元素显示时才播放动画效果

1

2

3

4

5

6

7

8

class _ActionsToolbarState extends State<ActionsToolbar>

    with SingleTickerProviderStateMixin {

  static const double ActionWidgetSize = 60.0;

  static const double ActionIconSize = 35.0;

  static const double ShareActionIconSize = 25.0;

  static const double ProfileImageSize = 50.0;

  static const double PlusIconSize = 20.0;

  AnimationController animationController;

 

设置初始化状态

1

2

3

4

5

6

7

8

9

@override

void initState() {

  super.initState();

  animationController = new AnimationController(

    vsync: this,

    duration: new Duration(seconds: 5),

  );

  animationController.repeat();

}

 

这里是完整的播放图标改造后的代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

Widget _getMusicPlayerAction() {

    return Container(

        margin: EdgeInsets.only(top: 10.0),

        width: ActionWidgetSize,

        height: ActionWidgetSize,

        child: Column(children: [

          Container(

            decoration: new BoxDecoration(

              borderRadius: BorderRadius.all(Radius.circular(25.0)),

              color: Colors.black54,

            ),

            padding: EdgeInsets.all(11.0),

            height: ProfileImageSize,

            width: ProfileImageSize,

            child: AnimatedBuilder(

              animation: animationController,

              child: Container(

                decoration: BoxDecoration(

                  shape: BoxShape.circle,

                  gradient: musicGradient,

                  //border: Border.all(color: Colors.black87, width: 11.0),

                  image: DecorationImage(

                    image: NetworkImage(widget.coverImg),

                    fit: BoxFit.cover,

                  ),

                ),

              ),

              builder: (BuildContext context, Widget _widget) {

                return Transform.rotate(

                  angle: animationController.value * 6.3,

                  child: _widget,

                );

              },

            ),

 

            // decoration: BoxDecoration(

            //   shape: BoxShape.circle,

            //   gradient: musicGradient,

            //   border: Border.all(color: Colors.black87, width: 11.0),

            //   image: DecorationImage(

            //     image: NetworkImage(widget.coverImg),

            //     fit: BoxFit.cover,

            //   ),

            // ),

          ),

        ]));

  }

 

结语

本博客会持续更新,将在业余时间将其他的功能完善。请持续关注本博客,代码地址:https://github.com/WangCharlie/douyin

欢迎各位点击star 和fork 代码. 

开源Flutter3.19仿抖音实战(开发自己的抖音APP) 开源Flutter3.19仿抖音实战(开发自己的抖音APP),最近有空的时候用flutter3做了一个抖音的项目,方便大家学习,提供源码,有操作思路。原创开发基于flutter3.19.5+dart3.3.3+getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块 阅读详情

相关推荐

【拿走不谢】flutter3.19仿抖音实战短视频源码

flutter3.19.x仿抖音教你开发商业级APP接入字节跳动穿山甲广告//穿山甲广告 Android appid 必填//穿山甲广告 ios appid 必填//使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView 选填//appname 必填//是否允许sdk展示通知栏提示 选填//是否在锁屏场景支持展示广告落地页 选填//测试阶段打开,可以通过日志排查问题,上线时去除该调用 选太难。

flutter开发app的博客 2895

flutter3_douyin:基于flutter3+dart3短视频直播实例|Flutter3.x仿抖音

uni-app+vue3+vk-uview多端直播商城项目。

码农ICoding 4508

【Flutter应用】Flutter精仿抖音开源

总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。需要的朋友可以私信我【资料】或者点这里免费领取。

m0_60567796的博客 1354

抖音实战Flutter

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。现在越来越多的企业开始使用Flutter进行开发,比如咸鱼、京东金融、贝壳等等都在使用,Flutter的前途一片大好。 时下最流行和受大家喜欢的app,抖音占有一席之地。我用业余时间,使用Flutter开发了一个开源项目FlutterTikTok,实现了抖音的UI效果,希望与大家分享交流。 源码获取,点击直达 ...

Androidbye的博客 2064

【源码版】flutter3.19仿抖音实战企业级APP应用

源码版flutter3.19仿抖音实战企业级APP应用,全新Flutter原创基于flutter3.19.5+dart3.3.3+getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,商城、购物车、支付功能等模块。同时接入了友盟SDK统计数据。

flutter开发app的博客 1360

【Flutter应用】Flutter精仿抖音开源(1)

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的最后,互联网不存在所谓的寒冬,只是你没有努力罢了!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

2401_84149505的博客 1240

第二篇-用Flutter手撸一个抖音国内版,看看有多炫

前言 继上一篇使用Flutter开发的抖音国际版后再次撸一个国内版抖音,大部分功能已完成,主要是Flutter开发APP速度很爽, 先看下图 项目主要结构介绍 这次主要的改动在api.dart 及douyin.dart里,国内抖音的api是不同的,另外地址以及实体类也不一样。详细下面介绍. 抖音的实体类 主要是讲json转化为实体模型,然后绑定到view 层面,写这个实体类还是很耗费时间的,毕竟得先用爬网知识讲抖音的json拿到,并且根据json反向写实体类. 这个地址...

wclhack的专栏 7301

原创开发Flutter3.19仿抖音实战,学不会我去刷厕所

最近有空的时候用flutter3做了一个抖音的项目,方便大家学习,提供源码,有操作思路。原创开发基于flutter3.19.5+dart3.3.3+getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,包含商城、购物车、支付功能等模块。 同时接入了友盟SDK统计数据,用户下载安装,活跃量,次日留存等等。

flutter开发app的博客 2415

第四篇-用Flutter手撸一个抖音国内版,看看有多炫

前言 这次对布局进行优化,主要包含了首页tabview pageview 以及添加几个按钮的操作过程.主要使用到stack层叠布局,tabpview和pageview,tabview两个页面,一个关注,一个推荐,左右切换,pageview被包含在tabview里面. 布局优化 抖音的顶部appbar 是悬浮层叠展示,而flutter的层叠组件是stack, 因此最外面采用stack, 其次中间是tabview,分别是关注和推荐两个选项卡,关注在没有登录的时候会弹出一个提示需要认证登录的页面,这里加

wclhack的专栏 1706

第3章 信息技术服务(一)

对 第三章 《信息技术服务》中第一、二、三节 <内涵与外延、原理与组成、服务生命周期>进行总结、归纳

好好学习,天天向上的博客 733

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

用Flutter手撸一个抖音国际版 看看有多炫

肉眼品世界导读:本文为启明星技术架构师社群作者投稿,字节跳动选择了flutter作为混合开发的语言,Flutter “一出生”就以“UI 漂亮、像素级可控、性能流畅、可媲美原生性能”等...

weixin_45727359的博客 1518

From Manual to Magic: How nnU-Net is Revolutionizing Biomedical Image Segmentation Without Human Int

本文探讨了nnU-Net如何通过全自动深度学习技术革新生物医学图像分割领域。作为自我配置的智能系统,nnU-Net无需人工干预即可完成从数据预处理到模型训练的全流程,显著提升医学影像分割的效率和精度,尤其在CT和MRI影像分析中表现卓越。

metal的博客 1085

flutter json转对象_用Flutter手撸一个抖音国际版 看看有多炫

肉眼品世界导读:本文为启明星技术架构师社群作者投稿,字节跳动选择了flutter作为混合开发的语言,Flutter “一出生”就以“UI 漂亮、像素级可控、性能流畅、可媲美原生性能”等特点吸引广大开发者的眼球,自渲染引擎甚至具备开发游戏的能力。更多优质内容请关注微信公众号“肉眼品世界”(ID:find_world_fine),深度价值体系传递技术日新月异,都是站在巨人肩膀上的思考,前端...

weixin_42508241的博客 266

代码复现——SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架

根据《SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs》(《SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架》)论文思路,简单复现代码,以实现SymAgent中的Agent-Planner和Agent-Executor模块。Agent-Planner利用大语言模型的归纳推理能力从知识图谱中提取符号规则,指导高效的问题分解。

qq_60040306的博客 1607

机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用?

1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特征提取的第二个作用。那就是我们很熟悉的奖学金评定,我们知道学生的文化课成绩,道德分数,以及各种其他竞赛的成绩。摆在奖学金评定委员会面前的任务就是如何知道一个学生是否...

月下花弄影 5万+

第五篇- 抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫

前言 由于中间几个月项目天天加班,导致没没时间更新,最近一段时间对前端进行了重构,加了很多页面,如登录、注册、关注、个人中心等,目前写这个纯属业余个人爱好,所以断断续续的继续在做… 前端地址:https://www.pgyer.com/dtok 后端服务器地址:http://47.95.209.198:8181/ 注释:由于本人的apple id无法打包ios、所以暂时只打包的android版本,ios版本正在解决账号问题 效果如下: 架构更新 之前技术采用flutter做的前端,后端api则对接的是

wclhack的专栏 3162

VINS-Fusion实战:从零搭建无人机视觉惯性导航系统(附ROS配置指南)

本文提供了一份详尽的VINS-Fusion实战指南,涵盖从硬件选型、传感器标定到ROS节点配置与参数调优的全过程。重点解析了如何将VINS-Fusion视觉惯性里程计系统与PX4飞控深度集成,并实现室外GPS融合,旨在帮助开发者从零搭建稳定、高精度的无人机视觉惯性导航系统。

lll78的博客 867

抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫

前言由于中间几个月项目天天加班,导致没没时间更新,最近一段时间对前端进行了重构,加了很多页面,如登录、注册、关注、个人中心等,目前写这个纯属业余个人爱好,所以断断续续的继续在做.........

weixin_45727359的博客 512

NSIS教程(8): 基于第三方界面库的安装包界面

前面的几篇文章介绍了NSIS的传统界面的安装包和现代界面的安装包的制作方法,也提到了NSIS支持自定义页面(即使用page custom)的特性,自定义页面需要用户自己创建对话框、控件、添加控件响应等等,虽然NSIS提供了nsDialogs.nsh来支持这些功能,但使用起来还是不太方便(需要专门了解这个插件诸多用法),而且不够灵活,所以本文介绍一种终极的自定义界面的安装包解决方案,即完全使用第三方

while(1) { smile(); } 9万+

IMX335摄像头原理图设计,已量产

从工程组织上看,IMX335 模组和 IMX415 模组属于同一类产品:核心矛盾不是外设多,而是高速图像链路、电源域和调试接口要同时兼顾。ATK-MCIMX335 这张图的结构也很直接,三路 LDO、本地 24MHz 可选时钟、4-lane MIPI 数据对和一组主板侧标准接口,构成了一张非常典型的量产摄像头子板。

不脱发的程序猿 442

flutter图标按钮_第四篇-用Flutter手撸一个抖音国内版,看看有多炫

前言这次对布局进行优化,主要包含了首页tabview pageview 以及添加几个按钮的操作过程.主要使用到stack层叠布局,tabpview和pageview,tabview两个页面,一个关注,一个推荐,左右切换,pageview被包含在tabview里面.布局优化抖音的顶部appbar 是悬浮层叠展示,而flutter的层叠组件是stack, 因此最外面采用stack, 其次中间是tabv...

weixin_42508557的博客 352

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Flutter 用 PageView 仿抖音滑动页面,太炫酷了吧

接入字节跳动穿山甲广告//穿山甲广告 Android appid 必填//穿山甲广告 ios appid 必填//使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView 选填//appname 必填//是否允许sdk展示通知栏提示 选填//是否在锁屏场景支持展示广告落地页 选填//测试阶段打开,可以通过日志排查问题,上线时去除该调用 选太难//是否支持多进程,true支持 选填]);

it7899的博客 1531

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用Flutter开发的抖音国际版

简介 最近花了两天时间研究使用Flutter开发一个抖音国际版. 个人感觉使用Flutter开发app快得不要不要的额. 两天就基本可以开发个大概出来. 最主要是热重载,太方便实时调整UI布局了. 相应速度极快. 如下图: 主要项目架构 详细说明一下,开发主要在lib文件夹 pubspec.yaml是配置插件的位置,如http:^0.12.0+4,类似依赖组件. common文件夹存放的是重写的网络组件,以及图标组件icons.dart config文件夹存放的...

wclhack的专栏 3355

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 第二篇-用Flutter手撸一个抖音国内版,看看有多炫
下一篇: 第四篇-用Flutter手撸一个抖音国内版,看看有多炫
wclhack
博客等级 码龄18年 15粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值