🎬
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_flutter
を9.1.2
にアップデートする
dependencies:
youtube_player_flutter: ^9.1.2
これだけで解決します。以下、何が起こっていたのかを詳しく解説します。
🤔 何が起こっていたのか?
発生していたエラー
アプリでYouTube動画を再生しようとすると、以下のエラーが発生し、動画が再生されない状態でした:
[JavaScript Handler "Errors"] type 'int' is not a subtype of type 'String'
エラーの原因
このエラーはYouTubeのAPI仕様変更が原因でした。具体的には:
-
YouTubeが返すエラーコードの型が変更
- 従来:String型でエラーコードを返す
- 変更後:int型でエラーコードを返す
-
埋め込み動画のエラー処理
- 埋め込み動画で特定のエラーが発生
- パッケージ側で適切にハンドリングできていない
🔧 何が修正されたのか?
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の型システム:
- 型の不整合を早期発見
- ランタイムエラーの防止
- 安全なコードの記述
⚠️ 類似の問題が発生した場合
確認すべきポイント
- パッケージのバージョン確認
flutter pub deps
-
GitHub Issuesをチェック
- 同じ問題を報告している人がいないか
- 解決策が提示されていないか
-
CHANGELOG確認
- 最新バージョンでの修正内容
- 破壊的変更の有無
トラブルシューティング
# キャッシュクリア
flutter clean
flutter pub get
# 場合によってはpodfileも更新
cd ios && pod update && cd ..
📚 参考情報
- 修正PR: Fix youtube player errors #1086
- パッケージページ: youtube_player_flutter | pub.dev
- YouTube Player API: YouTube Player API Reference
まとめ
youtube_player_flutter
の型エラー問題は9.1.2で解決済みです。
重要なポイント:
- 🔧 バージョンアップが最も確実な解決策
- 🎯 YouTubeのAPI仕様変更が原因
- 📊 コミュニティによる迅速な対応
- ⚡ ベースURL変更による安定性向上
同じエラーに遭遇した方は、まずパッケージのアップデートを試してみてください。大抵の場合、これで解決するはずです!
Discussion