LocalMusic 是一款面向个人本地音乐管理与播放场景开发的离线音乐播放器。项目立项背景来源于用户对“无登录、无广告、无联网、数据留在本机”的音乐播放需求。许多在线音乐软件依赖账号、云同步和网络资源,而用户本地收藏的 MP3、FLAC、WAV、M4A 等音频文件往往缺少轻量、纯粹、易管理的播放工具。因此,本项目目标是构建一款可在 Android、Windows、Web 等平台使用的本地音乐应用,让用户能够直接读取设备音频文件,完成播放、整理、歌单管理、歌词查看等核心操作。
软件主要功能包括本地音乐扫描与导入、歌曲播放控制、播放模式切换、歌曲信息管理、封面显示、歌单管理、搜索排序、歌词与桌面歌词等模块。播放模块支持点击歌曲播放、暂停、上一首、下一首、拖动进度条,以及顺序播放、单曲循环、随机播放等模式。歌曲管理模块可读取音频标签中的标题、歌手、专辑信息,并支持修改后写回音频标签;封面优先使用音频内嵌封面,没有封面时显示默认图标。歌单模块支持创建、重命名、删除歌单,批量添加歌曲,并可拖动调整歌单或歌曲顺序。搜索排序模块支持按歌曲名、歌手、专辑检索,也支持按创建时间或歌曲首字母升降序排列。歌词模块可识别同名 `.lrc` 文件,播放时自动同步当前歌词,并支持桌面歌词窗口显示。
业务流程上,用户首先安装并启动应用,授权读取音频或文件权限;随后将音乐文件放入指定目录,或通过应用导入功能添加歌曲。进入本地音乐列表后,用户可浏览、搜索、排序并点击歌曲播放。播放过程中可通过底部播放器控制进度和切歌,也可进入歌词页查看同步歌词。若需要分类管理,用户可创建歌单,在歌单中搜索并批量添加歌曲,之后拖动调整顺序并保存。若文件被移动或删除,用户还可以通过“清理找不到音源”维护歌单数据,保证本地音乐库整洁可用。
下面这版可以直接用:
1、整体架构和设计思路,不同模块使用的技术栈:
本项目 LocalMusic 是一款基于 Flutter 开发的离线本地音乐播放器,整体采用跨平台设计,面向 Android、Windows 和 Web 等平台。项目设计思路是“本地优先、轻量可用、数据自主管理”,不依赖账号登录、网络音乐、云同步和在线推荐。架构上按功能模块划分,主要包括本地音乐库、播放器、歌单管理、歌词显示、文件扫描/导入、设置与平台适配等模块。前端界面使用 Flutter + Material 风格实现,音频播放能力使用本地播放器相关技术,文件选择与导入使用系统文件访问能力,音频标签、封面、歌词等信息通过本地文件解析完成,数据持久化用于保存歌曲、歌单、播放队列、排序和筛选状态。
2、“我”的负责模块和结果:
我主要负责项目的整体功能设计、核心播放流程、本地音乐管理、歌单管理、歌词显示、封面处理、Android 真机适配和打包发布等工作。最终实现了对 MP3、OGG、FLAC、WAV、M4A 等多种音频格式的支持,完成了顺序播放、单曲循环、随机播放 3 种播放模式,支持创建、重命名、删除歌单,以及歌曲搜索、排序、批量添加和拖拽调整顺序。项目已完成 Android APK、Windows 包和 Web 静态版本的发布准备,并在 Android 真机上完成安装和基础功能验证。
3、“我”遇到的难点、坑,和解决方案:
开发中主要难点在于本地文件权限、音频标签读写、封面缓存、歌词同步和 Android 平台兼容。比如 Android 分区存储限制导致不能简单按文件路径删除或读取音乐,我通过系统授权和 MediaStore 方式处理真实文件操作;封面显示容易误用目录图片,我改为只读取音频内嵌封面,并把缓存放入应用私有目录,避免污染系统相册;歌词同步中存在进入页面后定位不准的问题,我根据播放器实时进度重新挂载歌词视图并滚动到当前句。通过这些处理,提升了应用的稳定性和用户体验。