搜尋套件、儲存庫與 APP 分類

套件詳情v1.5.0

chewie_audio

一個帶有 Cupertino 和 Material 播放控制項的 Flutter 音訊播放器

AndroidiOSWebmacOS
近 30 天下載
3.1萬
喜歡數
91
Pub 分數
140

安裝套件

flutter pub add chewie_audio

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

Chewie Audio 是一個 Flutter 套件,提供可自訂的音訊播放器,其直覺式的播放控制設計靈感來自 Cupertino 與 Material 設計。它支援跨多個平台的音訊檔案播放,包括 Android、iOS、Web 和 macOS。此套件以簡潔與一致性為設計目標,能順暢整合至需要音訊播放功能的應用程式中,並提供優雅的使用者介面。該套件內建進度追蹤、播放/暫停功能與音量控制,非常適合用於播客、音樂播放器,或任何需要可靠音訊播放功能的應用。

適用情境

  • 播客應用
  • 有聲書閱讀器
  • 音樂串流介面
  • 教育內容播放器
  • 互動式學習應用

主要特色

  • Cupertino 和 Material 設計控制項
  • 跨平台支援(Android、iOS、Web、macOS)
  • 內建進度和音量指示器
  • 與 Flutter 的簡單整合
  • 可自訂的播放介面

適合對象

  • 開發面向音訊的 Flutter 應用程式的開發者
  • 優先考慮跨平台一致的使用者介面
  • 需要輕量級音訊播放的應用程式
  • 教育類或媒體豐富的應用程式
  • 使用 Flutter 原生平台整合的專案

使用建議

  • 僅限音頻播放(無影片)
  • 需要外部音頻源URL
  • 可能需要額外的狀態管理來處理複雜的工作流程
  • 未針對高性能量音頻處理進行優化
  • 依賴於底層的Flutter音訊庫以實現核心功能

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

chewie_audio

Version CI Generic badge

The audio player for Flutter with a heart of gold.

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

Preview

MaterialControls

CupertinoControls

Installation

In your pubspec.yaml file within your Flutter Project:

dependencies:
  chewie_audio: <latest_version>
  video_player: <latest_version>

Use it

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

await videoPlayerController.initialize();

final chewieAudioController = ChewieAudioController(
  videoPlayerController: videoPlayerController,
  autoPlay: true,
  looping: true,
);

final playerWidget = ChewieAudio(
  controller: chewieAudioController,
);

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();
  chewieAudioController.dispose();
  super.dispose();
}

Options

Chewie got some options which controls the video you provide. These options appear on default on a showModalBottomSheet (like you already know from YT maybe). Chewie is passing on default Playback speed and Subtitles options as an OptionItem.

To add additional options just add these lines to your ChewieController:

additionalOptions: (context) {
  return <OptionItem>[
    OptionItem(
      onTap: () => debugPrint('My option works!'),
      iconData: Icons.chat,
      title: 'My localized title',
    ),
    OptionItem(
      onTap: () =>
          debugPrint('Another option working!'),
      iconData: Icons.chat,
      title: 'Another localized title',
    ),
  ];
},

If you don't like to show your options with the default showModalBottomSheet just override the View with the optionsBuilder method:

optionsBuilder: (context, defaultOptions) async {
  await showDialog<void>(
    context: context,
    builder: (ctx) {
      return AlertDialog(
        content: ListView.builder(
          itemCount: defaultOptions.length,
          itemBuilder: (_, i) => ActionChip(
            label: Text(defaultOptions[i].title),
            onPressed: () =>
                defaultOptions[i].onTap!(),
          ),
        ),
      );
    },
  );
},

Your additionalOptions are already included here (if you provided additionalOptions)!

Last but not least: What is an option without proper translation. To add your strings to them just add:

optionsTranslation: OptionsTranslation(
  playbackSpeedButtonText: 'Wiedergabegeschwindigkeit',
  subtitlesButtonText: 'Untertitel',
  cancelButtonText: 'Abbrechen',
),

Subtitles

Since version 1.1.0 chewie supports subtitles. Here you can see how to use them

You can provide an List<Subtitle> and customize your subtitles with the subtitleBuilder function.

Just add subtitles as following code is showing into your ChewieController:

ChewieController(
  videoPlayerController: _videoPlayerController,
  autoPlay: true,
  looping: true,
  subtitle: Subtitles([
    Subtitle(
      index: 0,
      start: Duration.zero,
      end: const Duration(seconds: 10),
      text: 'Hello from subtitles',
    ),
    Subtitle(
      index: 1,
      start: const Duration(seconds: 10),
      end: const Duration(seconds: 20),
      text: 'Whats up? :)',
    ),
  ]),
  subtitleBuilder: (context, subtitle) => Container(
    padding: const EdgeInsets.all(10.0),
    child: Text(
      subtitle,
      style: const TextStyle(color: Colors.white),
    ),
  ),
);

The index attribute is just for purpases if you want to structure your subtitles in your database and provide your indexes here. start, end and text are here the key attributes.

The Duration defines on which part of your video your subtitles should start and end. For example: Your video is 10 minutes long and you want to add a subtitle between: 00:00 and 00:10'th second you've to provide:

Subtitle(
  index: 0,
  start: Duration.zero,
  end: const Duration(seconds: 10),
  text: 'Hello from subtitles',
),

Example

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

Roadmap

  • [x] MaterialUI
  • [x] MaterialDesktopUI
  • [x] CupertinoUI
  • [x] Options with translations
  • [x] Subtitles
  • [x] CustomControls
  • [x] Auto-Rotate on FullScreen depending on Source Aspect-Ratio
  • [x] Live-Stream and UI
  • [x] AutoPlay
  • [x] Placeholder
  • [x] Looping
  • [x] Start video at
  • [x] Custom Progress-Bar colors
  • [x] Custom Overlay
  • [x] Allow Sleep (Wakelock)
  • [x] Playbackspeed Control
  • [x] Custom Route-Pagebuilder
  • [x] Custom Device-Orientation and SystemOverlay before and after fullscreen
  • [x] Custom ErrorBuilder
  • [ ] Support different resolutions of video
  • [ ] Re-design State-Manager with Provider
  • [ ] Screen-Mirroring / Casting (Google Chromecast)

iOS warning

The video_player plugin used by chewie_audio will only work in iOS simulators if you are on Flutter 1.26.0+. 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'.'
.......................,...';,'..'.....,.'.............''.'......'..'
...........'......'...',..'';,'..'.....................',';,..'....'.

所屬分類

依賴

依賴清單 2 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。