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: 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:

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 | |
Paket kode sumber |
Paket yang diunduh mencakup:
Komponen inti: Implementasi lengkap dari
AliPlayerWidgetdanAliPlayerWidgetController.Proyek contoh:
aliplayer_widget_examplemenyediakan 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.zCatatan: 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_widgetPerintah ini secara otomatis memperbarui file pubspec.yaml Anda.
Setelah menambahkan dependensi, jalankan perintah berikut di terminal untuk menginstalnya:
flutter pub getSetelah 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.
Langkah-langkah
Inisialisasi
AliPlayerWidgetController.Buat instans
_controllerdalam metodeinitState.Panggil API
configure.Gunakan
AliPlayerWidgetDatauntuk mengonfigurasi URL video, gambar mini, judul, dan informasi lainnya.Panggil
_controller.configure(data)untuk meneruskan data ke komponen pemutar.
Lepaskan sumber daya.
Panggil
_controller.destroy()dalam metodedisposeuntuk 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
Klon repositori.
Pertama, klon repositori
aliplayer_widget_exampleke mesin lokal Anda:cd aliplayer_widget_exampleInstal dependensi.
Jalankan perintah berikut untuk menginstal dependensi yang diperlukan oleh proyek:
flutter pub getKompilasi proyek.
Kompilasi proyek Android
Untuk mengompilasi proyek Android, lakukan langkah-langkah berikut:
Pastikan Anda telah menginstal Android SDK dan Gradle.
Jalankan perintah berikut untuk menghasilkan file APK:
flutter build apkSetelah 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:
Pastikan Anda telah menginstal Xcode dan CocoaPods.
Inisialisasi dependensi CocoaPods:
cd ios && pod install && cd ..Jalankan perintah berikut untuk menghasilkan file paket aplikasi iOS (IPA):
flutter build ipaSetelah kompilasi selesai, file IPA terletak di
build/ios/ipa/Runner.ipa.
Jalankan contoh.
Jalankan contoh Android.
flutter run lib/main.dartJalankan contoh iOS.
cd ios && pod install && cd ..//Jalankan pod install terlebih dahulu. flutter run lib/main.dart
Jalankan dari IDE
Gunakan Android Studio
Buka proyek.
Jalankan Android Studio. Pilih
Open an Existing Project, lalu buka direktorialiplayer_widget_exampleyang telah diklon.Instal dependensi.
Di Android Studio, klik file
pubspec.yaml, lalu klik tombolPub Getdi pojok kanan atas untuk menginstal dependensi.Konfigurasikan perangkat.
Pastikan perangkat fisik Android terhubung.
Jalankan aplikasi.
Klik tombol run berwarna hijau (
Run) di bilah alat dan pilih perangkat target untuk menjalankan aplikasi.
Gunakan VS Code
Buka proyek.
Jalankan VS Code. Pilih
File -> Open Folderdan buka direktorialiplayer_widget_exampleyang telah diklon.Instal dependensi.
Buka terminal (
Ctrl + ~) dan jalankan perintah berikut untuk menginstal dependensi:flutter pub getKonfigurasi perangkat.
Pastikan perangkat fisik Android atau iOS terhubung. Gunakan pemilih perangkat di pojok kiri bawah VS Code untuk memilih perangkat target.
Jalankan aplikasi.
Tekan
F5atau klik ikonRun and Debugdi Activity Bar sebelah kiri. Pilih konfigurasiFlutterdan mulai sesi debugging.
Gunakan Xcode (hanya iOS)
Buka proyek.
Navigasi ke direktori
iosdan klik ganda fileRunner.xcworkspaceuntuk membuka proyek di Xcode.Instal dependensi CocoaPods.
Jika dependensi CocoaPods belum diinstal, jalankan perintah berikut di terminal:
cd ios && pod install && cd ..Konfigurasi signature.
Di Xcode, pilih proyek
Runner, buka tabSigning & Capabilities, lalu konfigurasi akun developer dan sertifikat signing yang valid.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
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 ( |
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
IkhtisarAliPlayerWidget 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 |
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 |
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.