历时2个多月,基于开源网易云API的一款使用Flutter
开发的桌面音乐程序终于完成了它的第一个版本v1.0.0。再次感谢大佬为我们整理并提供众多接口。
先来看看第一版的成品图。
本项目是基于Flutter3.0.5
,Dart2.17.6
开发的桌面版程序,支持MacOS
,Windows
,Linux
。(PS:由于我手上只有Mac,没有试过其他两个平台,方便的大佬网友可以试下有没有问题,感谢。)
已完成的功能介绍
- 登录:手机号密码登录,短信登录,扫码登录
- 发现:每日音乐,推荐音乐
- 音乐播放:在线播放,本地播放,播放列表,音量调节,上一首,下一首切换,播放模式切换
- 音乐下载(JSON+mp3)模式,文件删除监听
- 私人FM
- 我喜欢的音乐
- 我收藏的歌单列表
- 音乐详情页,歌词滚动定位
- 评论列表,发表文字评论
用到的主要技术栈或三方库
Provider
:状态管理。
audioplayers
:实现音乐的播放,因为像justaudio
是不支持桌面版的。
dio
:网络请求。
Image
:就是自带的,只不过简单封装了下。
bitsdojo_window
:主要是之前用过这个,比较熟悉,最重要的是它在处理窗口大小时是加载完后才显示,不会出现先800x800,突然变到400x400的问题。
cookie_jar
:挺好用的Cookie
解析库,搭配dio_cookie_manager
可以做到自动管理请求中的cookie
问题。当然云音乐的cookie格式有点小问题,如果不预处理下,会导致cookie_jar
无法解析,需要自己先提前处理下,具体可以看下我项目中的CookieParse
类。(关于这个问题我会在后面的文章里仔细说明下)使用云音乐API最难过的第一关就是这个登录和cookie问题,一不小心就给你报个460,网络太拥堵。之前一度把我恶心坏了。
path_provider
:路径获取,不多说。
shared_preferences
:简单好用的key-value本地持久化存储。
url_launcher
:打开浏览器。
如何运行或调试
localhost
本项目支持本地服务器运行,如果要本地运行。需要先下载NeteaseCloudMusicApi项目,并通过node app.js
跑起来服务端项目,再运行DreamMusic
项目,不然接口是走不通的哦。
[图片上传失败...(image-4fefc5-1667454960372)]
Vercel
注意了Vercel
运行是要翻墙的,我已经在Vercel
上部署了一个服务,跳到设置页,网络设置,点击切换,选择https://netease-cloud-music-api-eight-kappa-18.vercel.app
即可。
自定义域名
当然你也可以选择自己服务器,选择网络设置,自定义输入即可。
最后
本文是关于DreamMusic
的第一篇文章,主要是对该项目做一个简单的介绍,后面我会展开一篇文章专门讲讲其中的细节和开发中遇到的坑点,比如cookie怎么管理,导航控制等。最后贴上项目的Github链接点我跳转DreamMusic,也可以直接下载Release包。