Skip to content

一款设计精美的音乐播放器。在UI中国上看到的一款惊艳的app设计,不忍心让如此精美的app只停留在纸面上,于是有了这个项目。

Notifications You must be signed in to change notification settings

coder-dongjiayi/flutter_music

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iMusic

视频演示

哔哩哔哩

页面效果预览

安装体验

  • Android 可以扫描下面的二维码进行下载安装,苹果因为分发限制暂时不能通过扫码的方式进行安装。如果恰好此时github不显示图片了 你可以点击这里进行下载安装。因为没有绑定域名可能会有风险提示,点击继续访问就可以了。 avatar

前言

  • flutter 是谷歌2017年推出的一套跨平台解决方案。目前已经支持iOS Android 和 web 端。macOs 也已经被提上了日程,而且谷歌未来的操作系统FuchsiaOS极大的可能 前端也是用flutter实现 ,flutter 野心很大,有想统一大前端的趋势。

运行环境

  • Flutter 1.12.13
  • Dart 2.7.0

如何开始

  1. git clone https://github.com/SHIMLY-GitHub/flutter_music.git
  2. 部署接口地址 https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=%e5%ae%89%e8%a3%85
  3. 配置服务器地址 lib/http_request/config.dat 更改baseURL 为第二步 中配置的接口地址
  4. 在命令行执行flutter run 默认情况下是debug模式。 如果你想获得更好的体验可以执行flutter run --release release模式下会比debug模式运行更流畅

依赖简介

  • provider 状态管理
  • shared_preferences 存储用户信息
  • flutter_swiper 轮播图
  • flutter_screenutil 屏幕适配
  • cached_network_image 这个网络图片缓存框架 既有动画又有本地缓存 系统自带的要么有缓存没动画 要么有动画没缓存
  • vibrate 震动反馈
  • audioplayers 音频播放
  • flutter_flexible_toast 信息提示

对于Flutter的一些看法

  • 我是一个iOS开发者,刚刚学习flutter 的时候确实不太适应这种声明式UI布局的理念,但是随着不断学习的深入 我发现之前在iOS上特别复杂的布局 在Flutter上变的如此简单,当你熟悉了以后会发现你的布局效率大大的提升。在学习的过程中 也踩了不少坑,最近写了这个简单的项目 就是想给打算入坑Flutter 但是又不知道如何开始的同学一些思路,在编写代码的过程中 对于widget的命名 我尽量避免了一些iOS平台专有的控件名称比如 cell tableView (因为这样对Andoroid的同学很不友好) 在文件命名和方法命名上 我翻阅了Flutter的源代码 尽量和系统保持统一。因为功能不多,也没有复杂的业务逻辑 ,更没有复杂的布局 特别适合新手入门学习 接下来我可能会加入一些UITest 完善一下整个的开发流程

  • 关于Flutter的优势以及优点不在赘述,请前往Flutter官网自行查看,我主要说一下Flutter目前存在一些不足之处

    1. 热重载 是Flutter特别推崇的一个功能,但是在实际开发中 当你的布局改动特别大 或者有新建文件的时候 热重载就会失效,我是用的AndroidStudio 有时候莫名其妙的热重载就不好使了 只能重启,重新编译,但是Flutter在iOS平台上重新编译一次时间还不短。
  1. AndroidStudio有个Bug Flutter中的bulid 方法莫名其妙的会多执行一次 。

  2. 关于Flutter中的回调地狱,其实我并不想把这个作为不足之处列出来,因为在我看来,这并不是什么特别大的问题 但是大多数人都特别排斥这种操作,所以我就简单说一下,Flutter上有一个库nested 还有我个人写了一个工具类如何优雅的处理flutter中层级其嵌套的问题倒是可以解决一些回调地狱的问题,但是我觉得可以通过封装widget 提取widget 来减少层级套用,如果你写Object-C代码 手写布局的话 你都写一个方法里 不封装 ,不抽取, 不加注释,其实这样的代码 看起来并不一定比回调地狱好多少。回调地狱的存在恰好可以让你审视自己写的代码 是否可读性强 是否易于维护。

  • 关于 Flutter 在iOS平台的表现能力,虽然Flutter绕过了js桥接带来的性能损耗 直接使用对应平台的GPU进行渲染,其性能接近原生。就实际来看 也确实如此,不过在iOS平台 实话实说 总感觉跟原生还有有点差距,但这并不是说Flutter的性能比原生要差很多,更多的原因可能是因为iOS平台的动画效果 相对更加流畅,所以给人感觉原生效果似乎性能更好。我知道的商业项目大规模应用Flutter 有阿里旗下的闲鱼,还有京东旗下的芬香 但是闲鱼使用的Flutter 引擎是 经过改造,优化以后的 ,并不是github上开源的,至于芬香 一直听说京东有关于Flutter有深度的定制化 不知道京东用的是不是github上开源的。但是 不管怎样这两款App都很有参考意义。

  • 最后关于Flutter的发展 从目前社区活跃度以及中国互联网公司对Flutter的支持来看 大有劲头,Flutter是不是前端的未来 现在不好说 ,但是前端编程大统一 一定是未来,对于这种声明式UI 个人比较看好,因为很多在命令式UI上特别复杂的布局 会变的非常简单。而且谷歌在打造自己的新一代操作系统Fuchsia 前端也是使用Flutter。据 坊间传闻,这个操作系统还有可能取代Android 如果这样发展的话Flutter将大有可为。至于swiftUI 他跟Flutter很像,不过目前还不成熟 社区支持也不完善, 但是以苹果技术社区的力量,以及中国互联网公司KPI的诱惑,一旦swiftUI 成熟起来,相关的配套库就会像雨后春笋一样崛起,如果swiftUI 在将来也可以跨平台了 对于开发者和一些中小型公司来说 真的是善莫大焉。总之 不管是Flutter 还是 swiftUI 未来可期。

最后感谢UI设计师和接口开发团队

  1. 無我
  2. 网易云api

About

一款设计精美的音乐播放器。在UI中国上看到的一款惊艳的app设计,不忍心让如此精美的app只停留在纸面上,于是有了这个项目。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages