{"id":13550923,"url":"https://github.com/sarbagyastha/youtube_player_flutter","last_synced_at":"2025-05-13T23:06:01.591Z","repository":{"id":37432263,"uuid":"180573133","full_name":"sarbagyastha/youtube_player_flutter","owner":"sarbagyastha","description":"A Flutter plugin for inline playback or streaming of YouTube videos using the official iFrame Player API.","archived":false,"fork":false,"pushed_at":"2024-11-16T09:03:30.000Z","size":71803,"stargazers_count":745,"open_issues_count":501,"forks_count":881,"subscribers_count":24,"default_branch":"develop","last_synced_at":"2025-05-11T03:11:40.370Z","etag":null,"topics":["android","android-youtube-player","flutter","flutter-examples","flutter-plugin","flutter-web","flutter-youtube-player","inline","ios","ios-youtube","video-player","webview","youtube","youtube-player","youtube-player-api","youtube-player-library","youtube-video"],"latest_commit_sha":null,"homepage":"https://youtube.sarbagyastha.com.np","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sarbagyastha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-10T12:05:44.000Z","updated_at":"2025-05-09T13:52:22.000Z","dependencies_parsed_at":"2023-02-05T13:46:23.349Z","dependency_job_id":"84718c37-5beb-48aa-87d3-cdc0d83f155b","html_url":"https://github.com/sarbagyastha/youtube_player_flutter","commit_stats":{"total_commits":460,"total_committers":44,"mean_commits":"10.454545454545455","dds":0.2326086956521739,"last_synced_commit":"8046dc4ef8d6146886295c5b3bd5a1b7cdb81bb0"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarbagyastha%2Fyoutube_player_flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarbagyastha%2Fyoutube_player_flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarbagyastha%2Fyoutube_player_flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarbagyastha%2Fyoutube_player_flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sarbagyastha","download_url":"https://codeload.github.com/sarbagyastha/youtube_player_flutter/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254040749,"owners_count":22004607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-youtube-player","flutter","flutter-examples","flutter-plugin","flutter-web","flutter-youtube-player","inline","ios","ios-youtube","video-player","webview","youtube","youtube-player","youtube-player-api","youtube-player-library","youtube-video"],"created_at":"2024-08-01T12:01:39.631Z","updated_at":"2025-05-13T23:05:56.582Z","avatar_url":"https://github.com/sarbagyastha.png","language":"Dart","funding_links":[],"categories":["android","Dart"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/sarbagyastha/youtube_player_flutter/main/packages/youtube_player_iframe/screenshots/logo.png\" height=\"100\" alt=\"Youtube Player iFrame\" /\u003e\n\u003c/p\u003e\n\u003ch2 align=\"center\"\u003eYoutube Player iFrame\u003c/h2\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://pub.dartlang.org/packages/youtube_player_iframe\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/youtube_player_iframe\" alt=\"Pub\"\u003e\u003c/a\u003e\n\u003ca href=\"https://youtube.sarbagyastha.com.np\"\u003e\u003cimg src=\"https://img.shields.io/badge/Web-Demo-deeppink.svg\" alt=\"Web Demo\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/sarbagyastha/youtube_player_flutter/blob/main/packages/youtube_player_iframe/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-BSD--3-blueviolet\" alt=\"BSD-3 License\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/sarbagyastha/youtube_player_flutter\"\u003e\u003cimg src=\"https://img.shields.io/github/languages/top/sarbagyastha/youtube_player_flutter?color=9cf\" alt=\"Top Language\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/sarbagyastha/youtube_player_flutter/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/sarbagyastha/youtube_player_flutter\" alt=\"GitHub issues\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/sarbagyastha/youtube_player_flutter\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/sarbagyastha/youtube_player_flutter\" alt=\"Stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nFlutter plugin for seamlessly playing or streaming YouTube videos inline using the official [**iFrame Player API**](https://developers.google.com/youtube/iframe_api_reference). This package offers extensive customization by exposing nearly the full range of the iFrame Player API's features, ensuring complete flexibility and control.\n\n\u003ca href=\"https://youtube.sarbagyastha.com.np\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/sarbagyastha/youtube_player_flutter/main/packages/youtube_player_iframe/screenshots/demo.png\" width=\"200\" alt=\"Demo Screenshot\"\u003e\u003c/a\u003e\n\n\n## Features 🌟\n- ▶️ **Inline Playback**: Provides seamless inline video playback within your app.\n- 🎬 **Caption Support**: Fully supports captions for enhanced accessibility.\n- 🔑 **No API Key Required**: Easily integrates without the need for an API key.\n- 🎛️ **Custom Controls**: Offers extensive support for custom video controls.\n- 📊 **Metadata Retrieval**: Capable of retrieving detailed video metadata.\n- 📡 **Live Stream Support**: Compatible with live streaming videos.\n- ⏩ **Adjustable Playback Rate**: Allows users to change the playback speed.\n- 🛠️ **Custom Control Builders**: Exposes builders for creating bespoke video controls.\n- 🎵 **Playlist Support**: Supports both custom playlists and YouTube's native playlist feature.\n- 📱 **Fullscreen Gestures**: Enables fullscreen gestures, such as swiping up or down to enter or exit fullscreen mode.\n\n\nThis package uses [webview_flutter](https://pub.dev/packages/webview_flutter) under-the-hood.\n\n## Setup\nSee [**webview_flutter**'s doc](https://pub.dev/packages/webview_flutter) for the requirements.\n\n### Using the player\nStart by creating a controller.\n\n```dart\nfinal _controller = YoutubePlayerController(\n  params: YoutubePlayerParams(\n    mute: false,\n    showControls: true,\n    showFullscreenButton: true,\n  ),\n);\n\n_controller.loadVideoById(...); // Auto Play\n_controller.cueVideoById(...); // Manual Play\n_controller.loadPlaylist(...); // Auto Play with playlist\n_controller.cuePlaylist(...); // Manual Play with playlist\n\n// If the requirement is just to play a single video.\nfinal _controller = YoutubePlayerController.fromVideoId(\n  videoId: '\u003cvideo-id\u003e',\n  autoPlay: false,\n  params: const YoutubePlayerParams(showFullscreenButton: true),\n);\n```\n\nThen the player can be used in two ways:\n\n#### Using `YoutubePlayer`\nThis widget can be used when fullscreen support is not required.\n\n```dart\nYoutubePlayer(\n  controller: _controller,\n  aspectRatio: 16 / 9,\n);\n\n```\n\n#### Using `YoutubePlayerScaffold`\nThis widget can be used when fullscreen support for the player is required.\n\n```dart\nYoutubePlayerScaffold(\n  controller: _controller,\n  aspectRatio: 16 / 9,\n  builder: (context, player) {\n    return Column(\n      children: [\n        player,\n        Text('Youtube Player'),\n      ],\n    );\n  },\n)\n```\n\nSee the [example app](example/lib/main.dart) for detailed usage.\n\n## Inherit the controller to descendant widgets\nThe package provides `YoutubePlayerControllerProvider`.\n\n```dart\nYoutubePlayerControllerProvider(\n  controller: _controller,\n  child: Builder(\n    builder: (context){\n      // Access the controller as: \n      // `YoutubePlayerControllerProvider.of(context)` \n      // or `controller.ytController`.\n    },\n  ),\n);\n```\n\n## Want to customize the player?\nThe package provides `YoutubeValueBuilder`, which can be used to create any custom controls.\n\nFor example, let's create a custom play pause button.\n```dart\nYoutubeValueBuilder(\n   controller: _controller, // This can be omitted, if using `YoutubePlayerControllerProvider`\n   builder: (context, value) {\n      return IconButton(\n         icon: Icon( \n           value.playerState == PlayerState.playing\n             ? Icons.pause\n             : Icons.play_arrow,\n         ),\n         onPressed: value.isReady\n            ? () {\n              value.playerState == PlayerState.playing\n                ? context.ytController.pause()\n                : context.ytController.play();\n              }\n            : null,\n      );\n   },\n);\n```\n\n## Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarbagyastha%2Fyoutube_player_flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsarbagyastha%2Fyoutube_player_flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarbagyastha%2Fyoutube_player_flutter/lists"}