NextBus SG

一个显示新加坡所有公交相关信息的应用程序,包括公交到站时间和目录,以及其他功能。

testflight

google_play

NextBus-SGv

NextBus-SG

? 特点

点击查看所有功能
  • [x] 显示用户附近公交站的巴士到达时间
    • [x] 显示当前未运行的巴士列表
    • [x] 在搜索页面显示一个公交站是否也是地铁站
    • [x] 显示用户周围所有也是地铁站的公交站(需要帮助) (#2)
    • [x] 显示巴士的载客量(绿色表示不拥挤…)
    • [ ] 显示大学巴士(NUS、NTU、SUTD 等)的时间表,但仍需收集这些数据(查看 仓库获取更新)
  • [x] 能够将特定站点的巴士保存为收藏
    • [x] 使用底部工作表确认用户添加/删除收藏的操作
      • [ ] 在添加/删除收藏时显示吐司消息通知用户其操作
    • [x] 自动显示收藏巴士在站点(如果用户在站点)的到达时间
    • [x] 添加在页面中查看所有收藏的功能(弹窗
    • [x] 如果没有收藏,则显示提示用户添加收藏的消息
    • [x] 为收藏设置自定义名称
  • [x] 能够搜索巴士服务、路线和站点(搜索页面)
    • [x] 查看每个公交站的信息
    • [x] 查看每个巴士服务的信息
      • [x] 查看每个巴士服务的路线列表
    • [ ] 查看每个地铁站的信息(未计划)
  • [x] FAQ 页面,教用户如何使用该应用程序
  • [x] 引导页(介绍页),展示如何使用该应用程序
  • [x] 第三页(设置/选项页,也应显示如何使用该应用程序的教程/FAQ)
  • [x] 在应用启动时请求用户位置权限
    • [x] 如果位置权限被拒绝,则显示一个打开设置的按钮
  • [ ] 添加快速操作以转到收藏夹和地铁站地图(已实现,但在 iOS 上不起作用:#13634
  • [x] 主题自定义
    • [x] 明亮/黑暗主题
      • [ ] 根据主题更改状态栏文本颜色
    • [ ] accent 颜色(未计划)(可能不实现)(仅蓝色、绿色和浅蓝色)
    • [ ] 更改字体大小(未计划)(可能不实现)
  • [ ] 想一个更有创意的名字。
? 点击查看未来功能
  • [ ] 以图表视图显示到达时间,而不是仅仅显示数字(已计划,但实现难度大)
  • [ ] AR 导航
  • [ ] 告诉用户如何前往最近的公交车站(未计划)
  • [ ] 地图视图,显示最近的公交车站(未计划)(可能不实现)

Wiki

? 数据

查看 themindstorm/bus-sg 获取关于数据如何抓取的详细指南。数据版权归 LTA 所有。

? 使用的包

  • provider
  • hive
  • hive_flutter
  • hive_generator
  • geolocator
  • permission_handler
  • styled_widget
  • flutter_markdown
  • bot_toast
  • url_launcher
  • introduction_screen
  • flutter_launcher_icons
  • flutter_native_splash
  • quick_actions

应用理念

总之,我最初制作这个应用只是为了自己,因为我不满意任何现有的应用。我只需要一个简单、无杂乱的界面来显示我实际乘坐的巴士的巴士时间。偶尔,我不知道公交站在哪里。我只会使用谷歌地图。我从未发现巴士应用上的大地图有用。

无地图

问题是,一旦你知道公交站在哪里,你就不需要再使用地图了。如果你已经知道站点在哪里,屏幕上的地图就会占用更多空间。偶尔我不知道如何到达公交车站,但这就是我使用谷歌/苹果地图的原因。

无杂乱界面

你需要巴士时间。我提供巴士时间。就这样。

情境感知收藏

  • 你将 14 路公交车勿洛换乘站 保存为收藏。
  • 你打开应用时靠近 勿洛换乘站
  • 我们假设你乘坐的是 14 路公交车,所以我们将它的时间放在屏幕顶部(请参考上面的图片)

其他信息

构建设置

您的系统需要 Flutter SDK。请按照此处的步骤 安装 到您的系统。Flutter 安装完成后,请按照以下步骤操作

  1. 克隆或 Fork 此仓库。
  2. lib 文件夹中,创建一个 keys.dart 文件。

keys.dart 文件中,粘贴以下内容

final String apiKey = '<LTA API KEY>';

要获取 API 密钥,请访问 LTA 的 API 访问请求网页 并填写表格。该密钥是应用程序正常运行所必需的。

设置好密钥后,可以使用以下命令测试该应用程序

flutter run

请查看 wiki 获取更多信息。

生成图标和启动屏

更新 pubspec.yaml 后,运行以下命令

flutter pub run flutter_launcher_icons:main
flutter pub pub run flutter_native_splash:create

卡在安装调试 Android 应用?

转到应用设置并卸载您的应用。该应用可能不会出现在您的启动器中,但仍可能已安装。转到您的设置,找到它,然后将其完全卸载。

也可以使用 ADB 完成此操作

adb uninstall com.themindstorm.nextbussg

如果这不起作用,请查看此 Stack Overflow 答案

构建 Android APK 和 appbundle

flutter build appbundle
flutter build apk

APK 构建完成后,将其安装到物理连接的 Android 设备上

flutter install

如果您有多个设备,您可以使用此命令查看已连接的 Android 设备列表

adb devices

要将应用安装到 Android 设备上,请复制设备 ID 并使用以下命令安装应用

flutter install <devce ID>

? 支持

喜欢这个项目?

  • ⭐️ 标星这个仓库
  • ? 发送一个 pull request 以添加新功能
  • ? 与其他开发者分享这个包
  • ? 下载移动应用(滚动到顶部获取链接)

详细截图

点击查看应用不同屏幕的详细图像和解释。这些图像可能对桌面屏幕来说太高了。
UI 描述
onboard view 引导页,用户在此被要求提供位置权限
main page 主页,用户在此看到附近(和收藏的)公交站列表,以及各自的巴士到达时间
favorites prompt 用户会收到确认提示
favorites view 靠近用户的收藏 会显示在主页上
search view 搜索页面
bus stop view 公交站详情
bus service view 巴士服务详情页
More page 更多页面,用户在此可以更改设置并查看更多功能
dark view ? 黑暗模式
rename 公交站可以重命名(重命名的公交站以斜体显示)
quick actions 快速操作! 这些目前似乎在 iOS 上不起作用:#13634

GitHub

https://github.com/themindstorm/NextBusSG