Bahasa: Bahasa Inggris | tidak
Pemilih kamera untuk proyek Flutter berdasarkan UI WeChat, yang juga merupakan ekstensi terpisah yang dapat dijalankan ke wechat_assets_picker.
Versi WeChat saat ini yang menjadi dasar UI: 8.0.49
. Desain UI akan diperbarui kapan saja setelah pembaruan WeChat.
Lihat Panduan Migrasi untuk mempelajari cara bermigrasi di antara perubahan-perubahan yang dapat mengganggu.
Paket ini hanya menjamin bahwa itu akan berfungsi pada versi Flutter yang stabil . Kami tidak akan memperbaruinya secara real-time agar selaras dengan saluran Flutter lainnya.
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
Paket ini dibuat dari paket-paket luar biasa ini.
Nama | Fitur |
---|---|
foto_manager | Abstraksi dasar dan manajemen aset. |
kamera | Menangkap gambar dan video. |
pemutar_video | Memutar video dan audio secara bersamaan. |
Implementasinya harus relatif stabil dalam paketnya. Jika Anda menemukan masalah terkait masalah tersebut saat menggunakan alat pilih, kirimkan masalah tersebut ke pelacak masalah kami terlebih dahulu.
State
khusus sState
ThemeData
![]() | ![]() | ![]() | ![]() | ![]() |
---|
Waspadai pemberitahuan di bawah ini sebelum Anda memulai apa pun:
AssetEntity
AssetPathEntity
Jika Anda memiliki pertanyaan tentang API dan perilaku terkait, periksa dokumen API photo_manager untuk detail selengkapnya.
Sebagian besar penggunaan dirinci dan tercakup dalam contoh. Silakan pelajari contoh ini dengan cermat sebelum Anda memiliki pertanyaan.
Jika Anda mendapatkan kesalahan resolve conflict
saat menjalankan flutter pub get
, gunakan dependency_overrides
untuk memperbaikinya.
Jalankan flutter pub add wechat_camera_picker
, atau tambahkan wechat_camera_picker
ke dependensi pubspec.yaml
secara manual.
dependencies :
wechat_camera_picker : ^latest_version
Versi stabil terbaru adalah:
Versi pengembang terbaru adalah:
Ikuti panduan pengaturan terperinci ini sebelum dijalankan:
NSPhotoLibraryAddUsageDescription
di iOS, diperlukan penggunaan onEntitySaving
atau onXFileCaptured
untuk menangani file yang diambil, AssetEntity
tidak tersedia dalam keadaan ini, mendapatkan aset tersebut dengan ID-nya akan menyebabkan error.Kemudian impor paket dalam kode Anda:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Saat Anda memilih aset, paket akan mendapatkan Locale?
dari BuildContext
Anda, dan kembalikan delegasi teks yang sesuai dengan bahasa saat ini. Pastikan Anda memiliki Locale
yang valid di pohon widget Anda yang dapat diakses dari BuildContext
. Jika tidak, delegasi Tiongkok default akan digunakan.
Bahasa delegasi teks tersemat adalah:
Jika Anda ingin menggunakan delegasi teks khusus/tetap, teruskan melalui CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Gunakan CameraPickerConfig
untuk perilaku pengambilan lainnya.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Bidang di CameraPickerConfig
:
Nama | Jenis | Keterangan | Nilai Bawaan |
---|---|---|---|
aktifkan Perekaman | bool | Apakah pemilih dapat merekam video. | false |
hanya Aktifkan Perekaman | bool | Apakah pemilih hanya dapat merekam video. Hanya tersedia jika enableRecording bernilai true . | false |
aktifkanTapRecording | bool | Apakah mengizinkan rekaman dapat dimulai dengan satu ketukan. Hanya tersedia jika enableRecording bernilai true . | false |
aktifkanAudio | bool | Apakah pemilih harus merekam audio. Hanya tersedia dengan rekaman. | true |
aktifkanSetExposure | bool | Apakah pengguna dapat mengatur titik eksposur dengan mengetuk. | true |
aktifkanExposureControlOnPoint | bool | Apakah pengguna dapat menyesuaikan eksposur sesuai dengan titik setel. | true |
aktifkan PinchToZoom | bool | Apakah pengguna dapat memperbesar kamera dengan gerakan mencubit. | true |
aktifkanPullToZoomInRecord | bool | Apakah pengguna dapat melakukan zoom dengan menariknya ke atas saat merekam video. | true |
aktifkan Pratinjau Berskala | bool | Apakah pratinjau kamera harus diskalakan selama pengambilan. | false |
harus Menghapus File Pratinjau | bool | Apakah file pratinjau akan dihapus saat muncul. | false |
harusAutoPreviewVideo | bool | Apakah video harus langsung diputar di pratinjau. | true |
Durasi Perekaman maksimum | Duration? | Durasi maksimal proses perekaman video. | const Duration(seconds: 15) |
Durasi Perekaman minimum | Duration | Durasi minimum proses perekaman video. | const Duration(seconds: 1) |
tema | ThemeData? | Data tema untuk pemilih. | CameraPicker.themeData(wechatThemeColor) |
delegasi teks | CameraPickerTextDelegate? | Delegasi teks yang mengontrol teks di widget. | CameraPickerTextDelegate |
resolusiPreset | ResolutionPreset | Hadirkan resolusi untuk kamera. | ResolutionPreset.ultraHigh |
kameraQuarterTurns | int | Jumlah putaran seperempat searah jarum jam tampilan kamera harus diputar. | 0 |
grupFormat gambar | ImageFormatGroup | Menjelaskan keluaran format gambar mentah. | ImageFormatGroup.unknown |
pilihanLensDirection | CameraLensDirection | Arah lensa mana yang disukai saat pertama kali menggunakan kamera. | CameraLensDirection.back |
lockCaptureOrientation | DeviceOrientation? | Apakah kamera harus dikunci pada orientasi tertentu selama pengambilan. | batal |
pembangun latar depan | ForegroundBuilder? | Pembuat widget latar depan yang akan mencakup seluruh pratinjau kamera. | batal |
pratinjauTransformBuilder | PreviewTransformBuilder? | Pembuat widget yang akan mengubah pratinjau kamera. | batal |
diEntitySaving | EntitySaveCallback? | Jenis panggilan balik ditentukan untuk menyimpan entitas di penampil. | batal |
diError | CameraErrorHandler? | Penangan kesalahan ketika terjadi kesalahan selama proses pengambilan. | batal |
diXFileCaptured | XFileCapturedCallback? | Definisi jenis panggilan balik saat XFile ditangkap oleh kamera. | batal |
padaMinimumRecordDurationNotMet | VoidCallback? | Panggilan balik ketika perekaman tidak memenuhi durasi perekaman minimum. | batal |
diPilihDikonfirmasi | void Function(AssetEntity)? | Panggilan balik saat gambar diambil atau video dikonfirmasi. | batal |
izinRequestOption | PermissionRequestOption? | Opsi permintaan izin saat menyimpan file yang diambil menggunakan paket photo_manager . | batal |
State
khusus s Semua antarmuka pengguna dapat dikustomisasi melalui State
khusus, termasuk:
CameraPickerState
CameraPickerViewerState
Setelah mengganti State
, meneruskannya melalui metode pengambilan, lebih khusus lagi:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
Saat ini, pratinjau tidak disinkronkan dengan benar di iOS. Anda dapat menemukan detail selengkapnya dalam terbitan ini: flutter/flutter#89216 . Selain itu, kirimkan masalah untuk menjelaskan pertanyaan Anda.
Terima kasih kepada orang-orang hebat ini (kunci emoji):
Alex Li ? ? ? ? | Caijinglong ? | Lael | mjl0602 ? | Alias Wang ? | kode kiri ? | Luong The Vinh |
luomo-pro ️️️️♿️ ? | Leonardo Zhu | Nguyen Phuc Loi ? | Amos ? | Tee Yu Juni |
Proyek ini mengikuti spesifikasi semua kontributor. Kontribusi apa pun dipersilakan!