Anytime播客播放器

这是 Anytime Podcast Player 的官方存储库 – 一个简单的 Android 和 iOS 播客播放应用,使用 Dart 和 Flutter 构建。


screenshot1.png 
screenshot2.png 
screenshot3.png 
screenshot3.png 

入门

Anytime 目前版本为 v1.1,基于 Flutter 2.8+ 构建。查看项目
了解当前正在进行的工作。

测试人员

如果您想帮助测试 Anytime,请点击下方图片前往 Play 商店或 Amazon App 商店。
您可以下载当前稳定版本或注册 Beta 频道并帮助测试
当前开发内容。

Get it on Google Play 
Anytime Play Store Link
Anytime App Store Link

我非常感谢所有反馈——无论是正面的还是负面的——因为它们都有助于改进 Anytime 并确定新功能的优先级。您可以通过[email protected]联系我。

从源代码构建

如果您尚未安装 Flutter SDK,请按照 Flutter 网站上的说明进行操作。
此处

获取 master 分支的最新代码

git clone https://github.com/amugofjava/anytime_podcast_player.git

在 anytime_podcast_player 目录下,获取依赖项

flutter packages get

然后运行

flutter run

或构建

flutter build apk

搜索引擎

Anytime 可以通过 iTunes 和 PodcastIndex 搜索播客。要使用 PodcastIndex,请先创建一个
账户https://podcastindex.org。这将生成所需的密钥
和密钥。要在 AnyTime 中启用使用 PodcastIndex 进行搜索,请将密钥和密钥作为运行时参数传递。

flutter run --dart-define=PINDEX_KEY=mykey --dart-define=PINDEX_SECRET=mysecret

如果从 Android Studio 运行,请将以下内容添加到命令行参数部分。

-t lib/main.dart --dart-define=PINDEX_KEY=mykey --dart-define=PINDEX_SECRET=mysecret

确保每个参数之间只有一个空格。我发现任何参数之间的额外空格
都会导致它们无法正确传递到 Flutter。

构建于

Anytime 使用了 pub.dev 上提供的几个很棒的包。以下是这些包的列表,它们
在应用程序中被大量使用。

  • Flutter – SDK。
  • Sembast – NoSQL 持久存储。
  • RxDart – 为 Dart Streams 和 StreamControllers 添加了其他功能。
  • Audio Service – 提供后台支持以支持音频库。
  • Podcast Search – 提供播客搜索和解析。

架构

architecture.png

Anytime 采用分层方法

  • UI – 用户看到的 UI。目前是移动端,但将来可以扩展到 Web 和/或桌面端。
  • BLoC – 处理 UI 的状态。UI 和 BLoC 之间的通信完全通过 Sinks 和 Streams 进行。
  • Services – 与 API 和 Repository 交互,为 BLoCs 和其他服务提供数据处理例程。
  • API – 与 iTunes API(通过一个包)交互以获取和解析播客数据。
  • Repository – 提供持久化存储。

贡献

如果您遇到问题或发现 bug,请在 GitHub 上提出。也欢迎提交 Pull Request。更多详细信息可以在CONTRIBUTING.md中找到。

有问题?

如果您想直接联系我,可以在[email protected]找到我。

许可证

Anytime 以 BSD 风格许可发布。有关更多详细信息,请参阅 LICENSE 文件。