fmovies - Flutter 展示应用
fmovies 是一款用于浏览新电影和查找最近电影院的多平台应用程序。它完全使用 Dart 和 Flutter 框架,并采用 BLoC 模式编写。
此应用未发布,因为它只是一个展示 Flutter 功能的应用。我们开始这个项目是为了学习 Dart 和 Flutter 框架的实践。
功能
- 新电影列表 - TMDB API 提供的正在上映的电影
- 收藏列表 - 应用数据库中收藏的电影列表
- 附近电影院地图 - 连接了 Places API 的谷歌地图,用于获取
最近的电影院 - 电影详情 - TMDB API 提供的电影详情
项目构建
首先,您需要设置您的开发环境。要
此,请访问官方 Flutter
文档并按照
进行操作。
在 flutter doctor 显示一切正常后,请执行以下步骤
- 将项目克隆到您的机器
- 使用您的 IDE 打开项目
- 运行
flutter packages get - 添加 Google Maps API 密钥
- Android: 在
AndroidManifest.xml中指定您的 API 密钥
<manifest>
<application>
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="YOUR KEY HERE"/>
</application>
</manifest>
- iOS: 在应用程序委托 ios/Runner/AppDelegate.swift 中指定您的 API 密钥
import UIKit
import Flutter
import GoogleMaps
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("YOUR KEY HERE")
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
- 在
/assets目录下创建一个名为secrets.json的新文件,并添加 TMDB
API 密钥和 Places API 密钥
{
"tmdb_key": "random_key",
"places_key": "random_key"
}
- 在您的模拟器/仿真器或设备上运行该应用。
插件
- flutter_bloc - 一个 Flutter
包,有助于实现 BLoC 模式。 - google_maps_flutter -
一个提供 Google Maps 小部件的 Flutter 插件。 - dio - 一个强大的 Dart HTTP 客户端,
支持拦截器、全局配置、FormData、请求
取消、文件下载、超时等。 - get_it - Dart 和 Flutter 项目的
简单服务定位器,具有一些额外的功能,深受
Splat 的启发。 - geolocator - 一个 Flutter
地理定位插件,可轻松访问平台特定的
位置服务(Android 上的 FusedLocationProviderClient 或不可用时为 LocationManager,以及 iOS 上的 CLLocationManager)。
location services (FusedLocationProviderClient or if not available the - moor_flutter - Moor 是一个
易于使用的、响应式的持久化库,适用于 Flutter 应用。在纯 Dart 中定义
您的数据库表,并享受流畅的查询 API、
自动更新的流等! - flare_flutter - Flutter
用于 Flare 的运行时,依赖于 flare_dart。 - location_permissions -
Flutter 的位置权限插件。该插件提供了
一个跨平台(iOS、Android)API 来检查和请求权限以
访问位置服务。 - auto_size_text - Flutter
小部件,可自动调整文本大小以完美地适应其边界。 - animated_text_kit - 一个
Flutter 包,其中包含一些很酷的文本
动画。