全部产品
Search
文档中心

ApsaraVideo VOD:Pemutar Flutter dengan integrasi UI

更新时间:Nov 26, 2025

Topik ini menjelaskan cara mengintegrasikan pemutar Flutter dengan antarmuka pengguna (UI). Anda dapat menggunakan AliPlayerWidget untuk memanfaatkan pemutar Flutter secara cepat.

Ikhtisar

AliPlayerWidget adalah komponen pemutaran video berkinerja tinggi untuk aplikasi Flutter. Komponen ini dibangun di atas kit pengembangan perangkat lunak (SDK) ApsaraVideo Player flutter_aliplayer. AliPlayerWidget mendukung Video sesuai permintaan (VOD), streaming langsung, putar balik daftar, dan mini-drama. Komponen ini menyediakan kumpulan fitur lengkap serta kemampuan kustomisasi UI yang sangat fleksibel untuk memenuhi kebutuhan pemutaran video di berbagai bidang, seperti pendidikan, hiburan, e-commerce, dan aplikasi mini-drama.

Persyaratan

Kategori

Deskripsi

Versi Flutter

2.10.0 atau lebih baru. Kami merekomendasikan Anda menggunakan versi 3.22.2.

Versi JDK

Gunakan JDK 11.

Catatan

Untuk mengatur versi JDK ke 11, buka Preferences > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK dan pilih versi 11. Jika versi 11 tidak tersedia, lakukan upgrade Android Studio Anda.

Versi Android

Android 6.0 atau lebih baru. Gradle 7.0 atau lebih baru.

Versi iOS

iOS 10.0 atau lebih baru.

Chip ponsel

Arsitektur: armeabi-v7a atau arm64-v8a.

Alat pengembangan

Gunakan Android Studio atau Visual Studio Code.

Izin

Izin jaringan

  • Aktifkan izin jaringan di Android dan iOS agar pemutar dapat memuat resource video online.

Konfigurasi lisensi

  • Anda harus memperoleh sertifikat lisensi dan kunci lisensi untuk pemutar dari Apsara Video SDK. Untuk informasi selengkapnya, lihat Kelola lisensi.

Catatan

Catatan: Jika lisensi tidak dikonfigurasi dengan benar, pemutar tidak akan berfungsi dan mungkin melemparkan exception otorisasi lisensi.

Untuk informasi lebih lanjut tentang konfigurasi inisialisasi, lihat proyek contoh aliplayer_widget_example.

Demo

Untuk membantu Anda merasakan fitur-fitur AliPlayerWidget secara cepat, kami menyediakan paket demo yang dibangun berdasarkan proyek contoh aliplayer_widget_example. Anda dapat menginstal dan menjalankan demo ini di perangkat Anda tanpa konfigurasi lingkungan tambahan.

Cara mendapatkan

Pindai kode QR berikut menggunakan ponsel Anda untuk mengunduh dan menginstal paket demo:

demo-qr-code

Catatan

Catatan: Tautan kode QR mengarah ke versi terbaru paket demo. Pastikan perangkat Anda mengizinkan instalasi aplikasi pihak ketiga.

Integrasi dan unduh SDK

aliplayer_widget bersifat open source dan tersedia untuk diunduh. Untuk menyesuaikan komponen, Anda dapat memperoleh dan memodifikasi kode sumbernya. Anda dapat memperoleh kode sumber lengkap melalui salah satu cara berikut:

Metode unduh

Tautan Unduhan

Sumber Pub

Catatan

Kami merekomendasikan Anda mengintegrasikan aliplayer_widget menggunakan tool manajemen paket.

GitHub

Repositori GitHub

Paket kode sumber

aliplayer_widget.zip

Paket yang diunduh mencakup:

  • Komponen inti: Implementasi lengkap dari AliPlayerWidget dan AliPlayerWidgetController.

  • Proyek contoh: aliplayer_widget_example menyediakan contoh kode untuk skenario seperti VOD, streaming langsung, dan putar balik daftar guna membantu Anda mengintegrasikan dan menggunakan komponen secara cepat.

  • Dokumentasi dan komentar: Kode sumber mencakup komentar rinci dan panduan pengembangan untuk pengembangan kustom.

Integrasi

Tambahkan dependensi secara manual

Tambahkan dependensi berikut ke file pubspec.yaml Anda:

dependencies:
  aliplayer_widget: ^x.y.z
Catatan

Catatan: x.y.z merepresentasikan nomor versi aliplayer_widget. Anda dapat melihat versi stabil terbaru di halaman resmi Pub.dev dan mengganti x.y.z dengan nomor versi aktual, misalnya ^7.0.0.

Gunakan tool command-line

Jika Anda lebih suka menggunakan command line, jalankan perintah berikut untuk menambahkan dependensi:

flutter pub add aliplayer_widget

Perintah ini secara otomatis memperbarui file pubspec.yaml Anda.

Setelah menambahkan dependensi, jalankan perintah berikut di terminal untuk menginstalnya:

flutter pub get

Setelah langkah-langkah tersebut selesai, AliPlayerWidget telah terintegrasi ke dalam proyek Anda. Anda kini dapat mulai menggunakannya.

Mulai cepat

Memutar video

Contoh berikut menunjukkan cara menyematkan pemutar video di halaman. Anda dapat memutar video hanya dengan beberapa baris kode.

Bentangkan untuk melihat kode contoh

import 'package:flutter/material.dart';
import 'package:aliplayer_widget/aliplayer_widget_lib.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: VideoPlayerPage(),
    );
  }
}

class VideoPlayerPage extends StatefulWidget {
  @override
  _VideoPlayerPageState createState() => _VideoPlayerPageState();
}

class _VideoPlayerPageState extends State<VideoPlayerPage> {
  late AliPlayerWidgetController _controller;

  @override
  void initState() {
    super.initState();
    // Inisialisasi controller komponen pemutar.
    _controller = AliPlayerWidgetController(context);
    // Konfigurasikan data komponen pemutar.
    final data = AliPlayerWidgetData(
      videoUrl: "https://example.com/video.mp4", // Ganti dengan URL video aktual.
      coverUrl: "https://example.com/cover.jpg", // Ganti dengan URL gambar mini aktual.
      videoTitle: "Sample Video",
    );
    _controller.configure(data); // Atur putar otomatis.
  }

  @override
  void dispose() {
    // Hapus instans pemutar dan lepaskan resource.
    _controller.destroy();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: AliPlayerWidget(
          _controller,
        ),
      ),
    );
  }
}

Langkah-langkah

  1. Inisialisasi AliPlayerWidgetController.

    Buat instans _controller dalam metode initState.

  2. Panggil API configure.

    • Gunakan AliPlayerWidgetData untuk mengonfigurasi URL video, gambar mini, judul, dan informasi lainnya.

    • Panggil _controller.configure(data) untuk meneruskan data ke komponen pemutar.

  3. Lepaskan sumber daya.

    Panggil _controller.destroy() dalam metode dispose untuk mencegah kebocoran memori.

Dukungan untuk skenario lainnya

Contoh di atas menunjukkan penggunaan dasar dalam skenario VOD. Untuk mempelajari skenario yang lebih kompleks, seperti streaming langsung dan putar balik daftar, lihat proyek contoh aliplayer_widget_example. Proyek tersebut berisi kode dan instruksi detail.

Proyek contoh

Deskripsi proyek

aliplayer_widget_example adalah proyek contoh berbasis library Flutter aliplayer_widget. Proyek ini membantu Anda memulai dan memahami cara mengintegrasikan serta menggunakan AliPlayerWidget dalam proyek Anda.

Proyek contoh ini menunjukkan cara:

  • Menyematkan komponen pemutar video.

  • Mengonfigurasi fitur pemutaran dalam berbagai skenario, seperti VOD, streaming langsung, dan putar balik daftar.

  • Menggunakan opsi kustom untuk menciptakan pengalaman pengguna yang dipersonalisasi.

Kompilasi dan jalankan proyek

Jalankan dari command line

  1. Klon repositori.

    Pertama, klon repositori aliplayer_widget_example ke mesin lokal Anda:

    cd aliplayer_widget_example
  2. Instal dependensi.

    Jalankan perintah berikut untuk menginstal dependensi yang diperlukan oleh proyek:

    flutter pub get
  3. Kompilasi proyek.

    Kompilasi proyek Android

    Untuk mengompilasi proyek Android, lakukan langkah-langkah berikut:

    1. Pastikan Anda telah menginstal Android SDK dan Gradle.

    2. Jalankan perintah berikut untuk menghasilkan file APK:

      flutter build apk
    3. Setelah kompilasi selesai, file APK terletak di build/app/outputs/flutter-apk/app-release.apk.

    Kompilasi proyek iOS

    Untuk mengompilasi proyek iOS, lakukan langkah-langkah berikut:

    1. Pastikan Anda telah menginstal Xcode dan CocoaPods.

    2. Inisialisasi dependensi CocoaPods:

      cd ios && pod install && cd ..
    3. Jalankan perintah berikut untuk menghasilkan file paket aplikasi iOS (IPA):

      flutter build ipa
    4. Setelah kompilasi selesai, file IPA terletak di build/ios/ipa/Runner.ipa.

  4. Jalankan contoh.

    • Jalankan contoh Android.

      flutter run lib/main.dart
    • Jalankan contoh iOS.

      cd ios && pod install && cd ..//Jalankan pod install terlebih dahulu.
      
      flutter run lib/main.dart

Jalankan dari IDE

  • Gunakan Android Studio

    1. Buka proyek.

      Jalankan Android Studio. Pilih Open an Existing Project, lalu buka direktori aliplayer_widget_example yang telah diklon.

    2. Instal dependensi.

      Di Android Studio, klik file pubspec.yaml, lalu klik tombol Pub Get di pojok kanan atas untuk menginstal dependensi.

    3. Konfigurasikan perangkat.

      Pastikan perangkat fisik Android terhubung.

    4. Jalankan aplikasi.

      Klik tombol run berwarna hijau (Run) di bilah alat dan pilih perangkat target untuk menjalankan aplikasi.

  • Gunakan VS Code

    1. Buka proyek.

      Jalankan VS Code. Pilih File -> Open Folder dan buka direktori aliplayer_widget_example yang telah diklon.

    2. Instal dependensi.

      Buka terminal (Ctrl + ~) dan jalankan perintah berikut untuk menginstal dependensi:

      flutter pub get
    3. Konfigurasi perangkat.

      Pastikan perangkat fisik Android atau iOS terhubung. Gunakan pemilih perangkat di pojok kiri bawah VS Code untuk memilih perangkat target.

    4. Jalankan aplikasi.

      Tekan F5 atau klik ikon Run and Debug di Activity Bar sebelah kiri. Pilih konfigurasi Flutter dan mulai sesi debugging.

  • Gunakan Xcode (hanya iOS)

    1. Buka proyek.

      Navigasi ke direktori ios dan klik ganda file Runner.xcworkspace untuk membuka proyek di Xcode.

    2. Instal dependensi CocoaPods.

      Jika dependensi CocoaPods belum diinstal, jalankan perintah berikut di terminal:

      cd ios && pod install && cd ..
    3. Konfigurasi signature.

      Di Xcode, pilih proyek Runner, buka tab Signing & Capabilities, lalu konfigurasi akun developer dan sertifikat signing yang valid.

    4. Jalankan aplikasi.

      Klik tombol run (▶️) di bilah alat Xcode dan pilih perangkat target untuk menjalankan aplikasi.

Deskripsi contoh

Proyek aliplayer_widget_example mencakup berbagai skenario. Proyek ini mendemonstrasikan fitur inti AliPlayerWidget dan penerapannya. Baik Anda membutuhkan halaman pemutaran VOD dasar, halaman streaming langsung yang kompleks, maupun halaman putar balik daftar video pendek, proyek contoh ini membantu Anda mempelajari cara mengintegrasikan dan menggunakan komponen secara cepat. Anda juga dapat menyesuaikan proyek sesuai kebutuhan.

Halaman pemutaran VOD (LongVideoPage)

Deskripsi

Halaman ini mendemonstrasikan cara menggunakan AliPlayerWidget untuk mengimplementasikan fitur pemutaran VOD dasar.

Hasil

Setelah halaman dimuat, video VOD yang ditentukan akan diputar otomatis, serta gambar mini dan judul ditampilkan. Anda dapat menggunakan bilah kontrol untuk menjeda, mempercepat, mengatur volume, dan melakukan operasi lainnya. Berikut adalah contoh kodenya:

@override
void initState() {
  super.initState();
  _controller = AliPlayerWidgetController(context);
  final data = AliPlayerWidgetData(
    videoUrl: "https://example.com/sample-video.mp4",
    coverUrl: "https://example.com/sample-cover.jpg",
    videoTitle: "Judul Video Contoh",
  );
  _controller.configure(data);
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: AliPlayerWidget(_controller),
  );
}

Halaman streaming langsung (LivePage)

Deskripsi

Halaman ini mendemonstrasikan cara mengonfigurasi AliPlayerWidget untuk mendukung pemutaran media streaming langsung real-time.

Hasil

Setelah halaman dimuat, siaran langsung diputar secara real-time dengan latensi rendah. Anda dapat melihat pesan dan mengirim komentar di jendela obrolan. Berikut adalah contoh kodenya:

@override
void initState() {
  super.initState();
  _controller = AliPlayerWidgetController(context);
  final data = AliPlayerWidgetData(
    videoUrl: "https://example.com/live-stream.m3u8",
    sceneType: SceneType.live,
  );
  _controller.configure(data);
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Column(
      children: [
        Expanded(child: AliPlayerWidget(_controller)),
        _buildChatArea(),
        _buildMessageInput(),
      ],
    ),
  );
}

Untuk informasi tentang cara menggunakan putar balik daftar untuk video pendek, lihat Integrasikan solusi mini-drama untuk Flutter.

Komponen inti

AliPlayerWidget

AliPlayerWidget adalah komponen pemutar inti yang digunakan untuk menyematkan dan memutar video dalam aplikasi Flutter.

Konstruktor

AliPlayerWidget(
  AliPlayerWidgetController controller, {
  Key? key,
  List<Widget> overlays = const [],
});

Nama

Deskripsi

controller

Controller pemutar. Digunakan untuk mengelola logika pemutaran.

overlays

Daftar opsional komponen overlay. Digunakan untuk menimpa UI kustom pada komponen pemutar.

Contoh

Bentangkan untuk melihat kode contoh

AliPlayerWidget(
  _controller,
  overlays: [
    Positioned(
      right: 16,
      bottom: 80,
      child: Column(
        children: [
          IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
          IconButton(icon: Icon(Icons.share), onPressed: () {}),
        ],
      ),
    ),
  ],
);

AliPlayerWidgetController

AliPlayerWidgetController adalah controller inti komponen pemutar. Controller ini digunakan untuk mengelola logika inisialisasi, pemutaran, dan penghapusan komponen pemutar.

Metode

Nama

Deskripsi

configure(AliPlayerWidgetData data)

Mengonfigurasi sumber data.

play()

Memulai pemutaran video.

pause()

Menghentikan sementara pemutaran.

seek(Duration position)

Loncat ke posisi pemutaran tertentu.

setUrl(String url)

Menetapkan URL pemutaran video.

destroy()

Menghapus instans pemutar dan melepaskan resource.

Contoh

// Inisialisasi controller komponen pemutar.
final controller = AliPlayerWidgetController(context);

// Tetapkan data komponen pemutar.
AliPlayerWidgetData data = AliPlayerWidgetData(
  videoUrl: "https://example.com/video.mp4",
);
controller.configure(data);

// Hapus pemutar.
controller.destroy();

AliPlayerWidgetData

AliPlayerWidgetData adalah model data yang diperlukan oleh komponen pemutar. Model ini berisi URL video, gambar mini, judul, dan informasi lainnya.

Properti

Nama

Deskripsi

videoUrl

URL pemutaran video. Parameter ini wajib.

coverUrl

URL gambar mini. Parameter ini opsional.

videoTitle

Judul video. Parameter ini opsional.

thumbnailUrl

URL gambar mini. Parameter ini opsional.

sceneType

Jenis skenario pemutaran. Nilai default adalah VOD (SceneType.vod).

Contoh

AliPlayerWidgetData(
  videoUrl: "https://example.com/video.mp4",
  coverUrl: "https://example.com/cover.jpg",
  videoTitle: "Video Contoh",
  sceneType: SceneType.vod,
);

Properti SceneType

Nilai enumerasi

Deskripsi

vod

Skenario VOD. Cocok untuk pemutaran video biasa. Mendukung semua fitur kontrol pemutaran.

live

Skenario streaming langsung. Cocok untuk pemutaran siaran langsung real-time. Tidak mendukung operasi terkait timeline seperti menyeret progress, maju/mundur cepat, atau penyesuaian kecepatan pemutaran.

listPlayer

Skenario putar balik daftar. Cocok untuk pemutar dalam daftar video, seperti feed atau daftar video pendek. Tidak mendukung gerakan vertikal untuk penyesuaian volume atau kecerahan.

restricted

Skenario pemutaran terbatas. Cocok untuk skenario yang memerlukan kontrol pemutaran terbatas, seperti pendidikan, pelatihan, atau pemantauan ujian. Tidak mendukung operasi terkait timeline seperti menyeret progress, maju/mundur cepat, atau penyesuaian kecepatan pemutaran.

minimal

Skenario pemutaran minimal. Cocok untuk video dekoratif, pemutar tertanam, atau overlay UI kustom. Hanya menampilkan konten video dan menyembunyikan semua elemen UI, termasuk gambar mini, teks, dan antarmuka kontrol. Mendukung kebutuhan UI sepenuhnya kustom.

Berikut adalah contohnya:

_controller = AliPlayerWidgetController(context);
// Tetapkan data komponen pemutar.
final data = AliPlayerWidgetData(
  sceneType: SceneType.vod
);
_controller.configure(data);

Fitur kustom

Komponen overlay

Anda dapat menggunakan parameter overlays untuk dengan mudah menimpa komponen UI kustom, seperti tombol Like, Comment, dan Share, pada pemutar.

AliPlayerWidget(
  _controller,
  overlays: [
    Positioned(
      right: 16,
      bottom: 80,
      child: Column(
        children: [
          IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
          IconButton(icon: Icon(Icons.comment), onPressed: () {}),
          IconButton(icon: Icon(Icons.share), onPressed: () {}),
        ],
      ),
    ),
  ],
);

Pemanggilan API umum

AliPlayerWidget menyediakan serangkaian pemanggilan API eksternal yang memungkinkan Anda mengontrol perilaku pemutar secara langsung. API ini diekspos melalui AliPlayerWidgetController dan mendukung kontrol pemutaran, kueri status, pembaruan data, dan fitur lainnya. Berikut adalah beberapa pemanggilan API eksternal umum beserta skenarionya:

Konfigurasi dan Inisialisasi

Nama

Deskripsi

configure

Mengonfigurasi sumber data pemutar dan menginisialisasi pemutar.

prepare

Menyiapkan pemutar. Ini adalah proses persiapan manual.

Kontrol Pemutaran

Nama

Deskripsi

play

Memulai pemutaran video.

pause

Menjeda pemutaran.

stop

Menghentikan pemutaran dan mengatur ulang pemutar.

seek

Loncat ke posisi pemutaran tertentu.

togglePlayState

Beralih antara status putar dan jeda.

replay

Memutar ulang video. Biasanya digunakan untuk memulai ulang video setelah pemutaran selesai.

Pengaturan properti pemutaran

Nama

Deskripsi

setSpeed

Menetapkan kecepatan pemutaran.

setVolume

Menetapkan volume.

setVolumeWithDelta

Menyesuaikan volume berdasarkan penambahan.

setBrightness

Menetapkan kecerahan layar.

setBrightnessWithDelta

Menyesuaikan kecerahan layar berdasarkan penambahan.

setLoop

Menetapkan apakah pemutaran berulang atau tidak.

setMute

Menetapkan apakah audio dibisukan atau tidak.

setMirrorMode

Menetapkan mode cermin, seperti cermin horizontal atau vertikal.

setRotateMode

Menetapkan sudut rotasi, seperti 90 atau 180 derajat.

setScaleMode

Menetapkan mode pengisian rendering, seperti stretch atau crop.

selectTrack

Beralih definisi pemutaran.

Pengaturan Lainnya

Nama

Deskripsi

requestThumbnailBitmap

Meminta gambar mini pada titik waktu tertentu.

clearCaches

Menghapus cache pemutar, termasuk cache video dan cache gambar.

getWidgetVersion

Mendapatkan nomor versi widget Flutter saat ini.

Fitur lanjutan

Sistem slot

Ikhtisar
AliPlayerWidget menyediakan sistem slot yang fleksibel yang mendukung kustomisasi antarmuka pemutar secara detail halus. Anda dapat menggabungkan atau mengganti komponen UI secara bebas untuk menciptakan pengalaman pemutaran yang bermerek, spesifik skenario, atau minimalis.

Jenis slot
Slot-slot area interaktif inti berikut telah tersedia:

Tipe

Fungsi

Tampilan default

playerSurface

Slot tampilan pemutar. Merender konten video. Kustomisasi tidak disarankan.

Ya

topBar

Slot bilah atas. Berisi tombol kembali, judul, dan tombol pengaturan.

Ya

bottomBar

Slot bilah bawah. Berisi kontrol pemutaran, bilah progress, dan tombol layar penuh.

Ya

playControl

Slot kontrol pemutaran. Area untuk kontrol gestur.

Ya

coverImage

Slot gambar mini. Menampilkan gambar mini sebelum video dimuat.

Ya (Bersyarat)

playState

Slot status pemutaran. Menampilkan informasi seperti pesan kesalahan.

Ya (Bersyarat)

centerDisplay

Slot tampilan tengah. Menampilkan indikator volume, kecerahan, dan lainnya selama operasi gestur.

Ya (Bersyarat)

seekThumbnail

Slot gambar mini seek. Menampilkan pratinjau gambar mini saat Anda menyeret bilah progress.

Ya (Bersyarat)

subtitle

Slot teks. Menampilkan teks video.

Ya (Bersyarat)

settingMenu

Slot menu pengaturan. Berisi opsi pengaturan pemutar.

Ya (kecuali dalam skenario minimal)

overlays

Slot overlay. Digunakan untuk menambahkan overlay kustom.

Tidak

Catatan
  • Jangan memodifikasi slot playerSurface (tampilan pemutar). Slot ini bertanggung jawab atas fitur rendering video inti. Memodifikasinya dapat menyebabkan exception pemutaran.

  • Bersyarat berarti slot tersebut diaktifkan hanya dalam status atau konfigurasi tertentu.

Gunakan antarmuka default

Jika Anda tidak mengonfigurasi builder slot, UI lengkap akan dimuat secara default. Ini cocok untuk skenario pemutaran standar.

Widget _buildPlayWidget() {
  return AliPlayerWidget(_controller);
}

Kustomisasi slot tertentu

Anda dapat menyesuaikan komponen tertentu sesuai kebutuhan dan mempertahankan sisanya sebagai default untuk mengurangi biaya pemeliharaan.

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: (context) => MyAppTopBar(title: 'My Video'),
    SlotType.bottomBar: (context) => MyCustomControls(),
  },
)

Kustomisasi semua slot

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: (context) => CustomTop(),
    SlotType.bottomBar: (context) => CustomBottom(),
    SlotType.playControl: (context) => GestureHandler(),
    SlotType.coverImage: (context) => BrandCover(),
    SlotType.playState: (context) => ErrorOverlay(),
    SlotType.centerDisplay: (context) => VolumeIndicator(),
    SlotType.seekThumbnail: (context) => PreviewThumb(),
    SlotType.subtitle: (context) => SubtitleView(),
    SlotType.settingMenu: (context) => MySettings(),
    SlotType.overlays: (context) => [AdBanner(), Watermark()],
  },
)

Sembunyikan slot tertentu

Tetapkan nilai slot ke null untuk menyembunyikan area yang sesuai.

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: null,        // Sembunyikan bilah atas.
    SlotType.settingMenu: null,   // Sembunyikan menu pengaturan.
    SlotType.centerDisplay: null, // Nonaktifkan prompt umpan balik gestur.
  },
)

Berikut adalah contoh lengkapnya:

// Sembunyikan bilah atas dan bawah untuk antarmuka yang lebih bersih.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.topBar: null,
  SlotType.bottomBar: null,
});

// Tambahkan overlay bisnis kustom.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.overlays: (context) => MyLikeShareButtons(),
});

// Buat antarmuka pengguna yang sepenuhnya bermerek.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.topBar: (context) => MyAppTopBar(),
  SlotType.bottomBar: (context) => MyAppBottomBar(),
  SlotType.settingMenu: null, // Sembunyikan pengaturan.
});

Notifikasi acara

AliPlayerWidgetController menyediakan serangkaian objek ValueNotifier untuk mengirim notifikasi real-time tentang perubahan status pemutar dan operasi pengguna. Berikut adalah beberapa objek notifier umum beserta tujuannya:

Ikhtisar notifier umum

Manajemen Status Pemutaran

Nama

Deskripsi

playStateNotifier

Memantau perubahan status pemutaran, seperti putar, jeda, dan berhenti.

playErrorNotifier

Memantau kesalahan yang terjadi selama pemutaran dan menyediakan kode kesalahan serta deskripsinya.

Manajemen Kemajuan Pemutaran

Nama

Deskripsi

currentPositionNotifier

Memperbarui progress pemutaran saat ini secara real-time. Satuan: milidetik.

bufferedPositionNotifier

Melacak progress buffering video untuk membantu Anda memahami rentang konten yang di-cache.

totalDurationNotifier

Memberikan informasi tentang durasi total video. Ini membantu Anda menghitung persentase progress pemutaran atau menampilkan durasi total.

Kontrol volume dan kecerahan

Notifier

Deskripsi

volumeNotifier

Memantau perubahan volume dan mendukung penyesuaian volume dinamis. Nilainya biasanya berkisar antara 0,0 hingga 1,0.

brightnessNotifier

Memantau perubahan kecerahan layar. Ini memungkinkan Anda menyesuaikan kecerahan berdasarkan cahaya sekitar. Nilainya biasanya berkisar antara 0,0 hingga 1,0.

Definisi dan gambar mini

Notifier

Deskripsi

currentTrackInfoNotifier

Memantau perubahan definisi video saat ini, seperti definisi standar, definisi tinggi, dan resolusi ultra-tinggi. Notifier ini juga memberikan detail definisi setelah pergantian.

thumbnailNotifier

Memantau status pemuatan gambar mini untuk memastikan pratinjau gambar mini yang sesuai ditampilkan secara real-time saat Anda menyeret bilah progress.

Unduh video dan tangkapan layar

Notifier

Deskripsi

snapFileStateNotifier

Memantau status path tangkapan layar saat ini. Saat Anda memanggil snapshot di controller, notifier ini memicu perubahan path.

downloadStateNotifier

Memantau status unduhan video. Fitur ini hanya tersedia untuk data bertipe `vidAuth` atau `vidSts`. Gunakan ini untuk memeriksa apakah video telah diunduh.

Penggunaan

Anda dapat menggunakan ValueListenableBuilder untuk mendengarkan perubahan dari notifier. Ini memungkinkan Anda memperbarui UI atau mengeksekusi logika secara real-time. Berikut adalah contohnya:

// Dengarkan kesalahan pemutaran.
ValueListenableBuilder<Map<int?, String?>?>(
  valueListenable: _controller.playErrorNotifier,
  builder: (context, error, _) {
    if (error != null) {
      final errorCode = error.keys.firstOrNull;
      final errorMsg = error.values.firstOrNull;
      return Text("Kesalahan pemutaran: [$errorCode] $errorMsg");
    }
    return SizedBox.shrink();
  },
);

Fitur

Adaptasi multi-skenario

Mendukung berbagai skenario, seperti VOD, streaming langsung, putar balik daftar, dan pemutaran layar penuh.

Rangkaian fitur yang kaya

  • Fitur dasar: Menyediakan fitur inti seperti kontrol pemutaran, panel pengaturan, tampilan gambar mini, dan pergantian definisi untuk memenuhi kebutuhan pemutaran video standar.

  • Kontrol gestur: Mendukung kontrol gestur untuk kecerahan, volume, dan progress pemutaran. Ini memberikan pengalaman pengguna yang intuitif dan nyaman.

Penyesuaian UI yang fleksibel

  • Dukungan overlay: Mendukung komponen overlay kustom untuk ekstensibilitas tinggi. Ini memungkinkan Anda mengimplementasikan fitur kompleks seperti iklan dan komentar langsung.

  • Desain modular: Menyediakan komponen UI bawaan yang dapat digunakan kembali, seperti bilah atas, bilah bawah, dan panel pengaturan, untuk memfasilitasi pengembangan kustom.

  • Adaptasi layar penuh: Secara otomatis beradaptasi dengan pergantian mode landscape dan portrait untuk memastikan efek tampilan optimal di berbagai perangkat.

Manajemen acara dan status

  • Pemantauan status real-time: Menyediakan pembaruan data real-time untuk status pemutaran, dimensi video, dan progress buffer untuk memfasilitasi interaksi dinamis.

  • Mekanisme callback event: Menyediakan listener event komprehensif untuk pemutar, termasuk manajemen status untuk mulai, jeda, dan selesai pemutaran. Ini membantu Anda mengelola berbagai skenario pemutaran.

  • Dukungan logging dan debugging: Menyediakan sistem logging detail untuk memfasilitasi troubleshooting dan optimasi performa.

Keunggulan inti

Dengan melakukan pemanggilan API sederhana, Anda dapat mengintegrasikan fitur pemutaran video berkualitas tinggi secara cepat dan secara signifikan mengurangi biaya pengembangan. AliPlayerWidget menangani baik kontrol pemutaran dasar maupun skenario interaktif kompleks, seperti penyesuaian gestur dan overlay. Ini membantu Anda membangun pengalaman pengguna yang lancar dan efisien.

Mudah digunakan

Anda dapat mengimplementasikan fitur pemutaran video kompleks dan mengintegrasikannya ke dalam proyek Flutter Anda secara cepat dengan melakukan pemanggilan API sederhana.

Fleksibel dan dapat diperluas

  • Desain modular mendukung berbagai opsi kustom untuk memfasilitasi pengembangan kustom.

  • Beradaptasi secara otomatis dengan berbagai ukuran layar dan resolusi untuk memastikan pengalaman pengguna yang konsisten.

Kinerja tinggi dan stabilitas

  • Dibangun di atas SDK ApsaraVideo Player, menyediakan pengalaman pemutaran video berlatensi rendah dan sangat stabil.

  • Arsitektur yang dioptimalkan, komponen ringan, pemuatan asinkron, dan model berbasis event memastikan operasi efisien dan pengalaman pengguna yang lancar.

Dukungan lintas platform

Memanfaatkan kemampuan lintas platform Flutter untuk mendukung Android dan iOS, memungkinkan pengembangan basis kode tunggal untuk kedua platform.

Catatan

Pelepasan Sumber Daya

Saat halaman dihancurkan, pastikan untuk memanggil metode AliPlayerWidgetController.destroy() guna melepaskan resource pemutar.

Izin Jaringan

Pastikan aplikasi memiliki izin jaringan yang diperlukan untuk memuat video online.

Dukungan Thumbnail

Untuk menggunakan fitur thumbnail, pastikan URL thumbnail yang valid telah disediakan.

Debugging dan Optimasi

Kami merekomendasikan Anda mengaktifkan fitur logging selama pengembangan untuk memfasilitasi troubleshooting. Selain itu, Anda harus mengoptimalkan performa komponen overlay agar tidak memengaruhi kelancaran pemutaran.

FAQ

Untuk informasi lebih lanjut tentang masalah umum dan solusinya saat menggunakan SDK ApsaraVideo Player, lihat FAQ tentang ApsaraVideo Player.