flutter_youtube_view_plus

This plugin provides Inlining YouTube player. To interact with YouTube the library uses the Frame Player API, inside of a WebView (Android), WKWebview (iOS). Therefore the YouTube app is not required on the user's device and there are no issues with YouTube Terms of Service.

This plugin using:

APK sample: https://github.com/hoanglm4/flutter_youtube_view/tree/master/example/android/APK

This version fixes a problem with Bundle in swift and adds the modestbranding parameter so Youtube link does not appear in the player

How to Use

1. Depend

Add this to you package's pubspec.yaml file:

dependencies:
  flutter_youtube_view_plus: any

2. Install

Run command:

$ flutter packages get

3. Import

Import in Dart code:

import 'package:flutter_youtube_view_plus/flutter_youtube_view_plus.dart';

Currently apps need to opt-in for the UIViews embedding preview on iOS by adding a boolean property to the Info.plist (key=io.flutter.embedded_views_preview value=YES).

4. Using Youtube View

 Container(
          child: FlutterYoutubeView(
                onViewCreated: _onYoutubeCreated,
                listener: this,
                scaleMode: YoutubeScaleMode.none, // <option> fitWidth, fitHeight
                params: YoutubeParam(
                      videoId: 'gcj2RUWQZ60',
                      showUI: false,
                      startSeconds: 0.0, // <option>
                      autoPlay: false) // <option>
                )
            ),

Features

Call IFrame API during playback

  • play()
  • pause()
  • loadOrCueVideo()
  • seekTo()
  • setVolume() only Android
  • mute()
  • unMute()
  • setPlaybackRate(rate: PlaybackRate.RATE_1) or setPlaybackRate(rateValue: 1.0)

PLAYER callback

  void onReady();

  void onStateChange(String state); // UNKNOWN, UNSTARTED, ENDED, PLAYING, PAUSED, BUFFERING, VIDEO_CUED

  void onError(String error); // INVALID_PARAMETER_IN_REQUEST, HTML_5_PLAYER, VIDEO_NOT_FOUND, VIDEO_NOT_PLAYABLE_IN_EMBEDDED_PLAYER

  void onVideoDuration(double duration);

  void onCurrentSecond(double second);