【问题标题】:Unable To Play Youtube Video in Flutter,无法在 Flutter 中播放 Youtube 视频,
【发布时间】:2026-01-09 02:55:01
【问题描述】:

在我的 Flutter 应用中实现 YouTube 视频播放器时出现以下错误。

未处理的异常:PlatformException(error, java.lang.IllegalStateException: 尝试创建未注册类型的平台视图:com.pichillilorenzo/flutter_inappwebview。

如何解决这个问题?

YoutubePlayerController controller = YoutubePlayerController(initialVideoId: youtubId);    
YoutubePlayer(
      controller: controller,
      showVideoProgressIndicator: false,
      progressIndicatorColor: AppColors.primaryColor,
    );

我正在使用this package

还有其他更好的方法可以在 Flutter 中播放 youtube 视频(Webview 除外)吗?

import 'package:cooking_genie/src/presentation/core/app_colors.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';

class YoutubePlayerWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return YoutubePlayerWidgetState();
  }
}

class YoutubePlayerWidgetState extends State<YoutubePlayerWidget> {
  //late YoutubePlayerController _controller;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return YoutubePlayer(
      controller: YoutubePlayerController(
        initialVideoId: 'zn2GwbPG-tc', //Add videoID.
        flags: YoutubePlayerFlags(
          hideControls: false,
          controlsVisibleAtStart: true,
          autoPlay: false,
          mute: false,
        ),
      ),
      showVideoProgressIndicator: true,
      progressIndicatorColor: AppColors.primaryColor,
    );
  }

  @override
  void dispose() {
    super.dispose();
  }
}

///
class Controls extends StatelessWidget {
  ///
  const Controls();

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          _space,
        ],
      ),
    );
  }

  Widget get _space => const SizedBox(height: 10);
}

【问题讨论】:

  • 你想在网上玩吗?
  • 不,我正在使用我在问题中提到的包...可能是内部使用 Webview 的包。
  • 您在哪里测试此应用、模拟器、设备或网络浏览器/chrome?
  • @YeasinSheikh 在模拟器上测试
  • 你能分享完整的小部件吗?

标签: flutter dart


【解决方案1】:

检查这个小部件。并确保在 andorid>app>build.gradle 上更改 minSdkVersion 22。对于 android,包要求 >=17。

import 'package:flutter/material.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';

class YTplayerCheck extends StatefulWidget {
  YTplayerCheck({Key? key}) : super(key: key);

  @override
  _YTplayerCheckState createState() => _YTplayerCheckState();
}

class _YTplayerCheckState extends State<YTplayerCheck> {
  YoutubePlayerController controller = YoutubePlayerController(
    initialVideoId: 'iLnmTe5Q2Qw',
    flags: YoutubePlayerFlags(
      autoPlay: true,
      mute: true,
    ),
  );
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: YoutubePlayer(
        controller: controller,
        showVideoProgressIndicator: false,
        progressIndicatorColor: Colors.cyanAccent,
      ),
    );
  }
}

【讨论】:

    最近更新 更多