🎬

youtube_player_flutter「type 'int' is not a subtype of type 'String'」

に公開

🚨 結論:バージョンアップで即解決

先に結論から言います。

youtube_player_flutterで以下のエラーが出て動画が再生できない場合:

[JavaScript Handler "Errors"] type 'int' is not a subtype of type 'String'

解決方法:youtube_player_flutter9.1.2にアップデートする

dependencies:
  youtube_player_flutter: ^9.1.2

これだけで解決します。以下、何が起こっていたのかを詳しく解説します。

🤔 何が起こっていたのか?

発生していたエラー

アプリでYouTube動画を再生しようとすると、以下のエラーが発生し、動画が再生されない状態でした:

[JavaScript Handler "Errors"] type 'int' is not a subtype of type 'String'

エラーの原因

このエラーはYouTubeのAPI仕様変更が原因でした。具体的には:

  1. YouTubeが返すエラーコードの型が変更

    • 従来:String型でエラーコードを返す
    • 変更後:int型でエラーコードを返す
  2. 埋め込み動画のエラー処理

    • 埋め込み動画で特定のエラーが発生
    • パッケージ側で適切にハンドリングできていない

🔧 何が修正されたのか?

GitHub PR #1086で以下の修正が行われました:

1. エラーコードの型変更に対応

// 修正前(String型前提)
onPlayerError: (error) {
  String errorCode = error; // ここで型エラー
}

// 修正後(int型にも対応)
onPlayerError: (error) {
  dynamic errorCode = error; // 柔軟な型対応
}

2. ベースURLの変更

埋め込み動画のエラー回避のため、ベースURLが変更されました:

// 修正前
String baseUrl = "https://www.youtube.com/embed/";

// 修正後
String baseUrl = "https://www.youtube-nocookie.com/embed/";

youtube-nocookie.comの使用により:

  • プライバシー保護の向上
  • 埋め込み時のエラー回避
  • より安定した動画再生

3. JavaScriptエラーハンドリングの改善

JavaScript側でのエラー処理も改善され、型の不整合によるクラッシュを防ぐようになりました。

🎯 実際の修正手順

STEP1: pubspec.yamlを更新

dependencies:
  youtube_player_flutter: ^9.1.2  # ←ここを更新

STEP2: パッケージを更新

flutter pub get

STEP3: 動作確認

アプリを再起動して、YouTube動画の再生を確認してください。

💡 今回の件から学ぶこと

1. 外部API仕様変更のリスク

YouTubeのような外部サービスは予告なく仕様変更を行うことがあります:

  • エラーコードの型変更
  • APIレスポンス形式の変更
  • セキュリティポリシーの変更

2. パッケージの重要性

オープンソースパッケージの恩恵:

  • コミュニティによる迅速な対応
  • 問題の共有と解決策の蓄積
  • 継続的なメンテナンス

3. 型安全性の重要性

Dartの型システム:

  • 型の不整合を早期発見
  • ランタイムエラーの防止
  • 安全なコードの記述

⚠️ 類似の問題が発生した場合

確認すべきポイント

  1. パッケージのバージョン確認
flutter pub deps
  1. GitHub Issuesをチェック

    • 同じ問題を報告している人がいないか
    • 解決策が提示されていないか
  2. CHANGELOG確認

    • 最新バージョンでの修正内容
    • 破壊的変更の有無

トラブルシューティング

# キャッシュクリア
flutter clean
flutter pub get

# 場合によってはpodfileも更新
cd ios && pod update && cd ..

📚 参考情報

まとめ

youtube_player_flutterの型エラー問題は9.1.2で解決済みです。

重要なポイント:

  • 🔧 バージョンアップが最も確実な解決策
  • 🎯 YouTubeのAPI仕様変更が原因
  • 📊 コミュニティによる迅速な対応
  • ⚡ ベースURL変更による安定性向上

同じエラーに遭遇した方は、まずパッケージのアップデートを試してみてください。大抵の場合、これで解決するはずです!

Discussion