fmovies - Flutter 展示应用

fmovies 是一款用于浏览新电影和查找最近电影院的多平台应用程序。它完全使用 Dart 和 Flutter 框架,并采用 BLoC 模式编写。

此应用未发布,因为它只是一个展示 Flutter 功能的应用。我们开始这个项目是为了学习 Dart 和 Flutter 框架的实践。

功能

  • 新电影列表 - TMDB API 提供的正在上映的电影
  • 收藏列表 - 应用数据库中收藏的电影列表
  • 附近电影院地图 - 连接了 Places API 的谷歌地图,用于获取
    最近的电影院
  • 电影详情 - TMDB API 提供的电影详情

项目构建

首先,您需要设置您的开发环境。要
此,请访问官方 Flutter
文档并按照
进行操作。
flutter doctor 显示一切正常后,请执行以下步骤

  1. 将项目克隆到您的机器
  2. 使用您的 IDE 打开项目
  3. 运行 flutter packages get
  4. 添加 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)
  }
}
  1. /assets 目录下创建一个名为 secrets.json 的新文件,并添加 TMDB
    API 密钥和 Places API 密钥
{
  "tmdb_key": "random_key",
  "places_key": "random_key"
}
  1. 在您的模拟器/仿真器或设备上运行该应用。

插件

  • 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 包,其中包含一些很酷的文本
    动画。

GitHub

https://github.com/martianandmachine/fmovies