The video player for Flutter with a heart of gold

Overview

chewie

Version CI Generic badge

The video player for Flutter with a heart of gold.

The video_player plugin provides low-level access to video playback. Chewie uses the video_player under the hood and wraps it in a friendly Material or Cupertino UI!

Demo

Demo

Installation

In your pubspec.yaml file within your Flutter Project:

dependencies:
  chewie: <latest_version>
  video_player: <latest_version>

Use it

import 'package:chewie/chewie.dart';
final videoPlayerController = VideoPlayerController.network(
    'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4');

await videoPlayerController.initialize();

final chewieController = ChewieController(
  videoPlayerController: videoPlayerController,
  autoPlay: true,
  looping: true,
);

final playerWidget = Chewie(
  controller: chewieController,
);

Please make sure to dispose both controller widgets after use. For example by overriding the dispose method of the a StatefulWidget:

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

Example

Please run the app in the example/ folder to start playing!

Migrating from Chewie < 0.9.0

Instead of passing the VideoPlayerController and your options to the Chewie widget you now pass them to the ChewieController and pass that latter to the Chewie widget.

final playerWidget = Chewie(
  videoPlayerController,
  autoPlay: true,
  looping: true,
);

becomes

final chewieController = ChewieController(
  videoPlayerController: videoPlayerController,
  autoPlay: true,
  looping: true,
);

final playerWidget = Chewie(
  controller: chewieController,
);

iOS warning

The video_player plugin used by chewie will only work in iOS simulators if you are on flutter 1.26.0 or above. You may need to switch to the beta channel flutter channel beta Please refer to this issue.

000000000000000KKKKKKKKKKKKXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKK00
000000000000000KKKKKKKKKKKKKXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00
000000000000000KKKKKKKKKKKKKXXXXXXK0xdoddoclodxOKKKKKKKKKKKKKKKKKKK00
00000000000000KKKKKKKKKKKKKKKK0xoc:;;,;,,,,''';cldxO0KKKKKKKKKKKKK000
00000000000000KKKKKKKKKKKKKKx:'',,,'.,'...;,'''',;:clk0KKKKKKKKKKK000
00000000000000KKKKKKKKKKKKd;'',,,;;;'.,..,c;;,;;;;;:;;d0KKKKKKKKKK000
00000000000000KKKKKKKKKKx,',;:ccl;,c;';,,ol::coolc:;;,,x0KKKKKKKKK000
00000000000000KKKKKKKKOl;:;:clllll;;o;;;cooclddclllllc::kKKKKKKKKK000
00000000000000KKKKKK0o;:ccclccccooo:ooc:ddoddloddolc;;;:c0KKKKKKK0000
00000000000000KKKKKOccodolccclllooddddddxdxddxkkkkxxo;'';d0KKKKKK0000
00000000000000KKKKkcoddolllllclloodxxxxdddxdddxxxddool:'.;O0KKKKK0000
00000000000000000xloollcccc:cclclodkkxxxdddxxxkkxdlllolc,,x0KKKKK0000
0000000000000000xccllccccc:;,'',;:dxkxxddddxkkkxdollcc:cc;d0KKKKKK000
000000000000000kcc:::cllol:'......odxxdoccldxxxdollllc:;;:d0KKKKK0000
00000000000000klc;;;clcc::;'...';;;:cll..',cdddolccccccc;:x0KKKKK0000
0000000000000kdl;:cclllclllc::;,;.'.''o;,,'.;ccoooollllc:;x0KKKKK0000
000000000000kol;:;::coolcc:::,.....,..cd,....':lolclolllc;x0KKKK00000
00000000000Odl;:'cllol;''',;;;;::''.',:doc;,',::looc:lcol:x0K00000000
0000000000Oxl:c,:lolc,..',:clllollodoc;cllolccloolllcclollO0K00000000
0000000000xllc,:lool:'.,...o.;llxdo:loc;;ccodlolodldllolld00K0K000000
000000000Ooc::coooc,,.',;:lx,,...':;o;l;':o:oolccocdoldloO0000KK00000
00000000kol:clllc;;,.;::;:clllllolxc;.:c':ocldlccl;clldox000000000000
000000Odll:cccc;:;,';cllooodoollcloll;c:.:d:ooo;cl;oloddkO00000000000
0000OOddOdll;c,;;,,;;:cldodddoxdoodlcc:.,ox:o:lllocdlodx00O0000000000
000Oxdl:::ll,:,:;,';c,:oloddolkxddxolc.'coccocolcccoooc;oxO00KOOOO000
dc;,'...';c,,:c:::'c:';cldoo;:odolxoc:.,o:oldlxol;lddl,.,lkO0KdlcckKO
'.......,:''';cll:cc,,;:l:c,,;:oc;cdc,.;::dldoxd:ldol;,'..,:lo,,,,kOk
.......';'.',:clcll,,;:l:;'..''c:,;cl'.';dxoooxlddl;',''..,,;'...,ool
.......,,.'';;:cld;.;,do:..;:,':c',:c''';xxdldocol'..';,.......',;;,;
.......'..'',,coxc'';:do'.clc:lco',o;',;cOxdol:cc:.....'..oxd;','.'..
'.......''..,:cxl;';;cx:''cll:clc'cl',:l:ko:c..;c:..';...,KNNl;:;ll:'
.......''...;,ooc,,,:od'.':cccdd,,l''cl:co;;,..;;'..','..;d0O,;;:XXXK
............'cll;',,lo'.'.::codl,c..:c;doc.,:.',....'...'......'l0XKk
'............c;;,':lc.'',.;ccol;:,.:c.:o,;'.;'......,...',,.'...'.,;;
.............',;;,cc..;,'';:lc':;..c'.c:;.,......,'..'...'',:,,;;,...
..............',,;:'.';,',:c;.;;..';..,;,.........''..'...'kko.,,....
...............;,:'..;''';:,..;''.''..''............'...'.lK0c';;c;'.
...............,,'...,.',;''...''....,......'............'dOx',;:dd,'
..............',.....'.,;..'..',..........'..............';:;',,ldo.'
.............'''.'.....,'..',','..'...''..'............'.......,dx'.'
.......................,...';,'..'.....,.'.............''.'......'..'
...........'......'...',..'';,'..'.....................',';,..'....'.
Comments
  • [Android] Add a delay before displaying progress indicator

    [Android] Add a delay before displaying progress indicator

    After a bit of digging in the video_player, I managed to enhance the seeking performance.

    However, with this when seeking, it's frequent to have dozen of milliseconds between STATE_BUFFERING and STATE_READY. This makes the CircularProgressIndicator be displayed during a few milliseconds.

    To prevent this, we propose to introduce a bit of temporization between the first isBuffering status and displaying the CircularProgressIndicator.

    | Proposal | Actual | | --- | --- | |chewie|schnell|

    Currently, an arbitrary timeout of 200ms has been chosen.

    Linked pull request : https://github.com/flutter/plugins/pull/5145

    NB: This proposal only edit the material_control version of the player. I can edit the other view if you are willing to accept this proposal.

    opened by henri2h 20
  • Because chewie >=1.2.0 depends on provider ^5.0.0

    Because chewie >=1.2.0 depends on provider ^5.0.0

    Because chewie >=1.2.0 depends on provider ^5.0.0 and flutter_bloc >=7.2.0 depends on provider ^6.0.0, chewie >=1.2.0 is incompatible with flutter_bloc >=7.2.0. So, because baseflutter depends on both flutter_bloc ^7.3.0 and chewie ^1.2.2, version solving failed. pub get failed (1; So, because baseflutter depends on both flutter_bloc ^7.3.0 and chewie ^1.2.2, version solving failed.)

    opened by VNAPNIC 19
  • Error when setting autoPlay: false

    Error when setting autoPlay: false

    ════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════ The following NoSuchMethodError was thrown while handling a gesture: The getter '_duration' was called on null. Receiver: null Tried calling: _duration

    When the exception was thrown, this was the stack: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5) #1 Duration.>= (dart:core/duration.dart:173:63) #2 _CupertinoControlsState._playPause (package:chewie/src/cupertino_controls.dart:498:45) #3 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24) #4 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11) ... Handler: "onTap" Recognizer: TapGestureRecognizer#d9726 debugOwner: GestureDetector state: ready won arena finalPosition: Offset(49.5, 619.5) finalLocalPosition: Offset(10.5, 18.5) sent tap down ════════════════════════════════════════════════════════════════════════════════════════════════════

    ════════ (2) Exception caught by gesture ═══════════════════════════════════════════════════════════ The getter '_duration' was called on null. Receiver: null Tried calling: _duration ════════════════════════════════════════════════════════════════════════════════════════════════════

    opened by budo385 17
  • Correct AspectRatio Issue | Allow Portrait

    Correct AspectRatio Issue | Allow Portrait

    Thank you @brianegan and all other contributors for this great 📦

    I saw some bugs in the player_with_controls and corrected the AspectRatio issue with Portrait Mode and enabled Portrait as of correcting it.

    I tested it several times and now chewie is calculating the video aspect ratio correctly. Furthermore I am also able to set the custom aspectRatio in the parameter if needed. But due to this fix maybe it's useless for the future.

    Result (inScreen): Bildschirmfoto 2020-03-24 um 01 47 54

    Result (FullScreen): Bildschirmfoto 2020-03-24 um 01 58 57

    The problem in player_with_controls were:

    1. the _calculateAspectRatio only calculated AspectRatio related to the device and is setting it for the whole view: Video + Controls. But the AspectRatio from the video was never used.
    2. The Height was ignored in the Container so it was necessary to set it also to enable Portrait correctly.
    opened by Ahmadre 16
  • Dispose VideoPlayerController when Widget is disposed

    Dispose VideoPlayerController when Widget is disposed

    Prevents the video from still playing in the background, when ChewieWidget is disposed.

    Example: When I close the view containing the ChewieWidget, e.g. navigate somwhere, the audio can still be heard in the background, since the VideoPlayerController has not been disposed.

    Also includes the small Readme link fix from #75

    opened by nstrelow 15
  • List of video players

    List of video players

    Is there easy way to make list of video players? I want to show up more than 1 video. I tried this:

    void main() {
      runApp(
        new ChewieDemo(controller:[
           new VideoPlayerController('https://flutter.github.io/assets-for-api-docs/videos/butterfly.mp4'),
           new VideoPlayerController('https://flutter.github.io/assets-for-api-docs/videos/bee.mp4'),
        ]),
      );
    }
    
    class ChewieDemo extends StatefulWidget {
      final String title;
      final List <VideoPlayerController> controller;
    

    But widget.controller gives error with argument type List. Could you help me?

    opened by vessivanov 15
  • Remove iconic font for improved App Store compatibility

    Remove iconic font for improved App Store compatibility

    Fixes #381 by removing the open_iconic_flutter dependency (which was bringing in the unsupported woff font file), replacing the icons with Cupertino (and Material, if appropriate) variants.

    While not a pixel for pixel replacement, they are like for like as the iconography is identical.

    Existing Iconic version: iconic

    Version of this PR, using Cupertino icons: cupertino

    opened by erickok 14
  • Add support for provider version 6

    Add support for provider version 6

    Allows Provider version 6 to be used in conjunction with Chewie.

    Some libraries are starting to update to use v6 of provider (such as flutter_bloc: ^7.2.0) which throws the following error on pub get:

    Because no versions of chewie match >1.2.2 <2.0.0 and chewie 1.2.2 depends on provider ^5.0.0, chewie ^1.2.2 requires provider ^5.0.0.
    And because flutter_bloc >=7.2.0 depends on provider ^6.0.0, chewie ^1.2.2 is incompatible with flutter_bloc >=7.2.0.
    

    The breaking changes in the provider changelog only talk about optional providers of which Chewie doesn't use any so it should be safe to use provider 6 with chewie. Example app still appears to work as expected with provider v6. Have added <7 to safeguard against breaking changes in future unreleased versions of Provider.

    Closes #530

    opened by zbarbuto 12
  • Can we help maintaining?

    Can we help maintaining?

    Hey, @brianegan . Awesome work on this package. So many people use it and it is just a must for a great video player experience in Flutter.

    Searching for chewie in pubspec.yaml on GitHub returns 1,308 results and that's only for GitHub. Very impressive!

    I noticed that there are a lot of PRs and Issues opened and there has not been a commit for 6 months now.

    Are you currently able to maintain this package? Can some people maybe pitch in and help out?

    Good luck on everything you got going on :D

    opened by nstrelow 12
  • error in streaming video, IOS (_duration is null)

    error in streaming video, IOS (_duration is null)

    Error show in IOS for streaming video:

    The following NoSuchMethodError was thrown while handling a gesture: The getter '_duration' was called on null. Receiver: null Tried calling: _duration

    Option:

    _chewieController = ChewieController( videoPlayerController: _videoPlayerController1, aspectRatio: 3 / 2, autoPlay: false, looping: true, isLive: true,

    Regards

    opened by numericni 12
  • [notwork in fullscreen] auto play next src

    [notwork in fullscreen] auto play next src

    initPlayer() async {
       
        _videoPlayerController = VideoPlayerController.network(src);
        _videoPlayerController.addListener(autoNextLis);
    
        _chewieController = ChewieController(
          videoPlayerController: _videoPlayerController,
          aspectRatio: 16 / 9,
          autoPlay: true,
          looping: false,
          allowedScreenSleep: false,
          allowFullScreen: true,
          allowMuting: false,
        );
        setState(() {});
      }
    
     autoNextLis() {
        int total = _videoPlayerController.value.duration?.inMilliseconds;
        final int pos = _videoPlayerController.value.position?.inMilliseconds ?? 0;
    
        if (total == null) total = 1;
        if (total - pos <= 0) {
          _videoPlayerController.removeListener(autoNextLis);
          if (currPlayIndex + 1 < videoList.length) toggleVideo(currPlayIndex + 1);
        }
      }
    
     toggleVideo(int i) async {
        if (i == currPlayIndex ||
            i > videoList.length - 1 ||
            (!_videoPlayerController.value.initialized &&
                !_videoPlayerController.value.hasError)) return;
        await _videoPlayerController.pause();
        currPlayIndex = i;
        await initPlayer();
      }
    

    When the playback is finished, the next video is played, and the full-screen video is stopped, but the non-full-screen video is playing the next video (click back to see)!

    opened by shiyiya 12
  • Cannot change Source URL while in fullscreen ?

    Cannot change Source URL while in fullscreen ?

    `import 'package:chewie/chewie.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart';

    class ChewiePlayer extends StatefulWidget { final String? url; const ChewiePlayer({Key? key, this.url}) : super(key: key);

    @override State createState() => _ChewiePlayerState(); }

    class _ChewiePlayerState extends State { VideoPlayerController? videocontroller; ChewieController? chewieController;

    @override void initState() { init(url: 'https://player.alicdn.com/video/aliyunmedia.mp4'); super.initState(); }

    @override void dispose() { videocontroller?.dispose(); chewieController?.dispose(); super.dispose(); }

    void init({String? url}) { videocontroller = VideoPlayerController.network(url!) ..initialize().then((_) { chewieController = ChewieController( videoPlayerController: videocontroller!, autoPlay: true, additionalOptions: (context) { return [ OptionItem( iconData: Icons.abc, title: 'next', onTap: () { init( url: 'https://player.alicdn.com/video/aliyunmedia.mp4'); }) ]; }, ); setState(() {}); }); }

    @override Widget build(BuildContext context) { if (videocontroller!.value.isInitialized) { return Chewie(controller: chewieController!); } return const Center( child: CupertinoActivityIndicator( color: Colors.white, )); } } `

    opened by songguowei 0
  • HELP: Unhandled Exception: UnimplementedError: init() has not been implemented

    HELP: Unhandled Exception: UnimplementedError: init() has not been implemented

    env:

    flutter --version Flutter 3.3.9 • channel stable • https://github.com/flutter/flutter.git Framework • revision b8f7f1f986 (5 weeks ago) • 2022-11-23 06:43:51 +0900 Engine • revision 8f2221fbef Tools • Dart 2.18.5 • DevTools 2.15.0

    os:

    OS: macOS 12.5.1 21G83 arm64 Host: MacBookPro17,1 Kernel: 21.6.0 Uptime: 21 days, 1 hour, 40 mins Packages: 125 (brew) Shell: zsh 5.8.1 Resolution: 1680x1050 DE: Aqua WM: Quartz Compositor WM Theme: Blue (Light) Terminal: Apple_Terminal Terminal Font: Monaco CPU: Apple M1 GPU: Apple M1 Memory: 3260MiB / 16384MiB

    code:

    i copy code from https://medium.flutterdevs.com/video-player-in-flutter-22202be72d6e

    // video_items.dart
    
    import 'package:chewie/chewie.dart';
    import 'package:flutter/material.dart';
    import 'package:video_player/video_player.dart';
    
    class VideoItems extends StatefulWidget {
      final VideoPlayerController videoPlayerController;
      final bool looping;
      final bool autoplay;
    
      VideoItems({
        required this.videoPlayerController,
        required this.looping,
        required this.autoplay,
        Key? key,
      }) : super(key: key);
    
      @override
      State<StatefulWidget> createState() => _VideoItemsState();
    }
    
    class _VideoItemsState extends State<VideoItems> {
      late ChewieController _chewieController;
    
      @override
      void initState() {
        super.initState();
        _chewieController = ChewieController(
          videoPlayerController: widget.videoPlayerController,
          aspectRatio: 5 / 8,
          autoInitialize: true,
          autoPlay: widget.autoplay,
          looping: widget.looping,
          errorBuilder: (context, errorMessage) {
            return Center(
              child: Text(
                errorMessage,
                style: TextStyle(color: Colors.white),
              ),
            );
          },
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return Padding(
          padding: const EdgeInsets.all(8.0),
          child: Chewie(
            controller: _chewieController,
          ),
        );
      }
    
      @override
      void dispose() {
        super.dispose();
        _chewieController.dispose();
      }
    }
    
    
    
    // chewie_test.dart
    
    import 'package:flutter/material.dart';
    import 'package:github_app/components/video/video_items.dart';
    import 'package:video_player/video_player.dart';
    
    class HomeScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.blueGrey[100],
          appBar: AppBar(
            automaticallyImplyLeading: false,
            title: Text('Flutter Video Player Demo'),
            centerTitle: true,
          ),
          body: ListView(
            children: <Widget>[
              // VideoItems(
              //   videoPlayerController: VideoPlayerController.asset(
              //     'assets/video_6.mp4',
              //   ),
              //   looping: true,
              //   autoplay: true,
              // ),
              VideoItems(
                videoPlayerController: VideoPlayerController.network(
                    'https://assets.mixkit.co/videos/preview/mixkit-a-girl-blowing-a-bubble-gum-at-an-amusement-park-1226-large.mp4'),
                looping: false,
                autoplay: true,
              ),
              // VideoItems(
              //   videoPlayerController: VideoPlayerController.asset(
              //     'assets/video_3.mp4',
              //   ),
              //   looping: false,
              //   autoplay: false,
              // ),
              // VideoItems(
              //   videoPlayerController: VideoPlayerController.asset(
              //     'assets/video_2.mp4',
              //   ),
              //   autoplay: true,
              //   looping: false,
              // ),
              VideoItems(
                videoPlayerController: VideoPlayerController.network(
                    "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4"),
                looping: true,
                autoplay: false,
              ),
            ],
          ),
        );
      }
    }
    
    

    result

    [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: UnimplementedError: init() has not been implemented.
    #0      VideoPlayerPlatform.init (package:video_player_platform_interface/video_player_platform_interface.dart:43:5)
    #1      _videoPlayerPlatform (package:video_player/video_player.dart:28:21)
    #2      VideoPlayerController.initialize (package:video_player/video_player.dart:362:25)
    #3      ChewieController._initialize (package:chewie/src/chewie_player.dart:552:35)
    <asynchronous suspension>
    
    

    is chewie do not support macos or something other wrong?

    i was reinstall video_player and chewie package,and still not working .

    flutter pub remove chewie 
    flutter pub remove video_player
    flutter pub add video_player
    flutter pub add chewie
    
    opened by lixiang4u 1
  • No Sound for m3u8 Stream

    No Sound for m3u8 Stream

    Hi. If I play a mp4 stream, it's playing fine with both video and audio.

    But when I play a m3u8 stream, it only plays the video. There is no audio for it.

    Stream: http://27.255.28.11:8278/3_1/playlist.m3u8

    opened by kashif789us 0
  • need an empty player constructor

    need an empty player constructor

    hi. thanks for this plugin . i need an ability for initialize an empty player and select video by user .

    your constructors need source for initialize

    VideoPlayerController.network(src); VideoPlayerController.file(f);

    if i send empty source plugin raise exception for invalid source.

    can u fix an empty constructor or any help?

    opened by mojanimator 0
  • Black player when exit fullscreen (WEB)

    Black player when exit fullscreen (WEB)

    On web, the video player turns black whenever you exits fullscreen. The video starts fine, you go on fullscreen and it's fine here too. Then, you exit fullscreen and the video is now black (with audio playing).

    To reproduce:

    1. start Chewie example app
    2. Go fullscreen
    3. Exit fullscreen

    I'm on Flutter 3.3.8. Chewie and video_player up-to-date with latest pub.dev versions.

    opened by J-Dark 0
Owner
Brian Egan
Montana boy living in Berlin, Indie Hacker, and speaker of bad German.
Brian Egan
Flutter Music Player - A complete and open source music player designed in flutter.

Flutter Music Player A complete and open source music player designed in flutter. It is first complete music player designed in flutter. This app expl

Nabraj Khadka 3 Aug 20, 2022
Flutter-Music-Player - A simple music player app that let you play mp3 songs with some customization feature with a rich user interface

Flutter-Music-Player - A simple music player app that let you play mp3 songs with some customization feature with a rich user interface

Ashirbad Swain 6 Jan 4, 2023
Better video player for Flutter, with multiple configuration options. Solving typical use cases!

Better video player for Flutter, with multiple configuration options. Solving typical use cases!

Jakub 732 Jan 2, 2023
Advanced video player based on video_player and Chewie for flutter

Better Player Advanced video player based on video_player and Chewie. It's solves many typical use cases and it's easy to run. Introduction This plugi

Ahmed Mahmoud 1 Dec 22, 2021
This is a flutter package of video player. it's a very simple and easy to use.

This is a flutter package of video player. it's a very simple and easy to use.

初冬 184 Nov 18, 2022
Audio player app in Flutter. Created as a tutorial for learning Flutter.

Music Player: create a simple Flutter music player app This is a Flutter project used during a series of articles on I should go to sleep. License Cop

Michele Volpato 11 May 5, 2022
Flutter radio player mod flutter 2.5

A Flutter plugin to play streaming audio content with background support and lock screen controls.

Ayotunde abdulsalam 1 Mar 14, 2022
Flutter plugin for sound. Audio recorder and player.

Flutter Sound user: your documentation is there The CHANGELOG file is here Overview Flutter Sound is a Flutter package allowing you to play and record

null 764 Jan 2, 2023
BlackHole - A Music Player App made with Flutter

BlackHole - A Music Player App made with Flutter

Ankit Sangwan 4.2k Jan 2, 2023
ZY Player TV app, developed with Flutter

ZY-Player-TV ZY Player TV app, developed with Flutter 1. 设置Flutter环境 1.1 按着https://flutter.dev/docs/get-started/install/windows 页面的指导,先安装好Flutter和Andr

null 165 Dec 23, 2022
Enjoy podcasts with Tsacdop! A podcast player built with flutter.

About Enjoy podcasts with Tsacdop. Tsacdop is a podcast player developed with Flutter, a clean, simply beautiful and friendly app, which is also free

stonegate 339 Dec 31, 2022
A Material designed music player developed in Flutter.

Flutter Music Player UI A Material designed music player developed in Flutter. Getting Started This project is a starting point for a Flutter applicat

Packiyanathan Mathulan 17 Jan 13, 2022
Flutter plugin for sound. Audio recorder and player.

Sounds Sounds is a Flutter package allowing you to play and record audio for both the android and ios platforms. Sounds provides both a high level API

Brett Sutton 75 Dec 8, 2022
Flutter music player application. (仿网易云音乐)

Flutter music player application. (仿网易云音乐)

Bin 3.1k Dec 30, 2022
A Flutter music player to play songs (mp3).

?? ?? Flutter Music A Flutter music player to play songs (mp3). Please star ⭐ the repo if you like what you see ?? . ?? Requirements Any Operating Sys

null 109 Dec 16, 2022
A simple music player made using Flutter.

Music Player App This is a beautiful music player, developed using Flutter. Features Play any song included in Flutter Assets Background Play Beautifu

Hash Studios 15 May 21, 2022
A flutter based music player for subsonic compatible music servers.

subsound A subsonic music player. Screenshots Release todo fix random breakage of player sometimes. seems like onStart is not working after background

Eivind Siqveland Larsen 26 Oct 6, 2022
A Music Player App made using Flutter.

A local music player app made using flutter. Getting Started This project is a starting point for a Flutter application. A few resources to get you st

Jobin Biju 13 Dec 22, 2022
A Sound Player App For Flutter

sound_player_app A Sound Player Flutter application.

null 3 Oct 7, 2022