Skip to content

Flutterプロジェクトにおける google_fonts パッケージのエラー「Type 'FontFeature' not found」の解決方法

エラー概要

Flutterプロジェクトで google_fonts(バージョン 6.2.0)使用時に発生する以下のエラー:

log
Error: 'FontFeature' isn't a type.
List<FontFeature>? fontFeatures,
     ^^^^^^^^^^^
Target kernel_snapshot failed: Exception

このエラーはビルドを失敗させ、flutter cleanpub get では解決しません。

⚠️ 根本原因

google_fonts パッケージの最新バージョン(6.2.0以上)に存在する互換性問題:

  • Dartコンパイラが FontFeature 型を認識できない
  • Flutter SDKの特定バージョンとの依存関係の不整合(主に2024年3月時点で報告)

🛠️ 推奨解決策:パッケージバージョンのダウングレード

  1. pubspec.yaml を編集

    yaml
    dependencies:
      flutter:
        sdk: flutter
      # 変更前(問題発生バージョン)
      # google_fonts: ^6.2.0  
      
      # 変更後(安定バージョン)
      google_fonts: 6.1.0  # ^キャレットを必ず削除
  2. 依存関係の再取得&リビルド

    bash
    flutter clean
    flutter pub get
    flutter run

必須注意点

  • キャレット(^) の完全削除が必要: 記号を残すと自動で問題バージョンが参照されます
  • 動作検証済バージョン: 正常動作が確認されているバージョン
    • 6.1.0(最安定)
    • 6.0.0
    • 5.1.0

🔍 代替解決手法(状況別)

手法1: Flutter SDK全面アップグレード

bash
flutter upgrade  # SDK自体を最新安定版に更新
flutter pub upgrade  # 全パッケージ最新化
  • 効果: SDKとパッケージの依存関係解消
  • 推奨条件: プロジェクトが最新SDKへの移行可能な場合

手法2: 開発環境変更(Android古いOS向け)

Android 8などでエラー発生時:

  1. 一旦Android 14+端末で実行(正常動作確認)
  2. 問題端末で再実行→エラー解消例あり

手法3: 代替バージョンの試用

yaml
# バージョン指定のバリエーション(6.1.0無効時)
google_fonts: "6.0.0"   # 引用符推奨:文字列であることを明示
# または
google_fonts: 5.1.0

🔑 根本対策の考え方

  1. バージョン固定: pubspec.yaml では package: 1.2.3 形式(キャレットなし)が安定
  2. パッケージチェック: アップデート前の pub.devレポート確認
  3. 依存関係トラブルシューティング:
    bash
    flutter pub deps  # パッケージ依存ツリー表示
    flutter pub outdated  # 非互換パッケージ検出

予防的対策

定期的な flutter pub upgrade --major-versions 実行で互換性破壊的更新を検知可能


✔️ 最終検証ポイント

対策手法メリットデメリット
6.1.0固定即時解決可能新機能利用不可
Flutter全体アップグレード最新機能利用可プロジェクト変更リスク
端末依存回避コード変更不要環境限定解決

最善策: 現状では google_fonts: 6.1.0 の厳格指定が最も安全かつ信頼性の高い解決法。プロジェクトが長期利用予定ならFlutter SDKの定期的アップデート推奨。