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


? 特点
点击查看所有功能
- [x] 显示用户附近公交站的巴士到达时间
- [x] 能够将特定站点的巴士保存为收藏
- [x] 使用底部工作表确认用户添加/删除收藏的操作
- [ ] 在添加/删除收藏时显示吐司消息通知用户其操作
- [x] 自动显示收藏巴士在站点(如果用户在站点)的到达时间
- [x] 添加在页面中查看所有收藏的功能(
弹窗) - [x] 如果没有收藏,则显示提示用户添加收藏的消息
- [x] 为收藏设置自定义名称
- [x] 使用底部工作表确认用户添加/删除收藏的操作
- [x] 能够搜索巴士服务、路线和站点(搜索页面)
- [x] 查看每个公交站的信息
- [x] 查看每个巴士服务的信息
- [x] 查看每个巴士服务的路线列表
- [ ] 查看每个地铁站的信息(未计划)
- [x] FAQ 页面,教用户如何使用该应用程序
- [x] 引导页(介绍页),展示如何使用该应用程序
- [x] 第三页(设置/选项页,也应显示如何使用该应用程序的教程/FAQ)
- [x] 在应用启动时请求用户位置权限
- [x] 如果位置权限被拒绝,则显示一个打开设置的按钮
- [ ] 添加快速操作以转到收藏夹和地铁站地图(已实现,但在 iOS 上不起作用:#13634)
- [x] 主题自定义
- [x] 明亮/黑暗主题
- [ ] 根据主题更改状态栏文本颜色
- [ ] accent 颜色(未计划)(
可能不实现)(仅蓝色、绿色和浅蓝色) - [ ] 更改字体大小(未计划)(可能不实现)
- [x] 明亮/黑暗主题
- [ ] 想一个更有创意的名字。
? 点击查看未来功能
- [ ] 以图表视图显示到达时间,而不是仅仅显示数字(已计划,但实现难度大)
- [ ] 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 路公交车,所以我们将它的时间放在屏幕顶部(请参考上面的图片)
其他信息
- 数据收集开始日期:2020年2月11日
- 项目开始日期:2020年2月13日
- 该项目于2020年4月18日由 happyharis 进行了审查:视频
- NextBus SG 有其 自己的推广网站,该网站也是开源的,位于 themindstorm/nextbus-website:2020年4月19日
构建设置
您的系统需要 Flutter SDK。请按照此处的步骤 安装 到您的系统。Flutter 安装完成后,请按照以下步骤操作
- 克隆或 Fork 此仓库。
- 在
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 | 描述 |
|---|---|
![]() |
引导页,用户在此被要求提供位置权限 |
![]() |
主页,用户在此看到附近(和收藏的)公交站列表,以及各自的巴士到达时间 |
![]() |
用户会收到确认提示 |
![]() |
靠近用户的收藏 会显示在主页上 |
![]() |
搜索页面 |
![]() |
公交站详情页 |
![]() |
巴士服务详情页 |
![]() |
更多页面,用户在此可以更改设置并查看更多功能 |
![]() |
? 黑暗模式 |
![]() |
公交站可以重命名(重命名的公交站以斜体显示) |
![]() |
快速操作! 这些目前似乎在 iOS 上不起作用:#13634。 |












