ภาษา: อังกฤษ | 中文
ตัวเลือกกล้อง สำหรับโปรเจ็กต์ Flutter ที่ใช้ UI ของ WeChat ซึ่งเป็นส่วนขยายที่รันได้แยกต่างหากสำหรับ wechat_assets_picker
เวอร์ชัน WeChat ปัจจุบันที่ UI ใช้: 8.0.49
การออกแบบ UI จะได้รับการอัปเดตตลอดเวลาหลังจากการอัพเดต WeChat
ดูคู่มือการโยกย้ายเพื่อเรียนรู้วิธีการโยกย้ายระหว่างการเปลี่ยนแปลงที่แตกหัก
แพ็คเกจรับประกันว่าจะใช้งานได้กับ Flutter เวอร์ชันเสถียร เท่านั้น เราจะไม่อัปเดตแบบเรียลไทม์เพื่อให้สอดคล้องกับช่องทางอื่นๆ ของ Flutter
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | |||
4.0.0+ | |||
3.0.0+ |
แพ็คเกจนี้สร้างจากแพ็คเกจที่ยอดเยี่ยมเหล่านี้
ชื่อ | คุณสมบัติ |
---|---|
รูปภาพ_ผู้จัดการ | นามธรรมพื้นฐานและการจัดการสินทรัพย์ |
กล้อง | จับภาพและวิดีโอ |
video_player | เล่นวิดีโอและไฟล์เสียงตามลำดับ |
การใช้งานควรค่อนข้างเสถียรในแพ็คเกจ หากคุณพบปัญหาใดๆ ที่เกี่ยวข้องกับปัญหาเหล่านี้เมื่อใช้เครื่องมือเลือก ให้ส่งปัญหาไปที่เครื่องมือติดตามปัญหาของเราก่อน
State
ที่กำหนดเองState
ThemeData
![]() | ![]() | ![]() | ![]() | ![]() |
---|
โปรดทราบประกาศด้านล่างก่อนที่คุณจะเริ่มดำเนินการใดๆ:
AssetEntity
AssetPathEntity
เมื่อคุณมีคำถามเกี่ยวกับ API และพฤติกรรมที่เกี่ยวข้อง โปรดดูรายละเอียดเพิ่มเติมในเอกสาร API ของ photo_manager
การใช้งานส่วนใหญ่มีรายละเอียดและครอบคลุมตามตัวอย่าง โปรดศึกษาตัวอย่างโดยละเอียดก่อนที่คุณจะมีคำถามใดๆ
หากคุณได้รับข้อผิดพลาด resolve conflict
เมื่อเรียกใช้ flutter pub get
โปรดใช้ dependency_overrides
เพื่อแก้ไข
เรียกใช้ flutter pub add wechat_camera_picker
หรือเพิ่ม wechat_camera_picker
ไปยัง pubspec.yaml
การอ้างอิงด้วยตนเอง
dependencies :
wechat_camera_picker : ^latest_version
เวอร์ชัน เสถียร ล่าสุดคือ:
เวอร์ชัน dev ล่าสุดคือ:
ปฏิบัติตามคู่มือการตั้งค่าโดยละเอียดเหล่านี้ก่อนรัน:
NSPhotoLibraryAddUsageDescription
บน iOS จำเป็นต้องใช้ onEntitySaving
หรือ onXFileCaptured
เพื่อจัดการไฟล์ที่บันทึกไว้ AssetEntity
จะไม่พร้อมใช้งานในกรณีนี้ การได้รับเนื้อหานั้นด้วย ID จะทำให้เกิดข้อขัดข้องจากนั้นนำเข้าแพ็คเกจในรหัสของคุณ:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
เมื่อคุณเลือกสินทรัพย์ แพ็คเกจจะได้รับ Locale?
จาก BuildContext
ของคุณ และส่งคืนผู้รับมอบสิทธิ์ข้อความที่เกี่ยวข้องของภาษาปัจจุบัน ตรวจสอบให้แน่ใจว่าคุณมี Locale
ที่ถูกต้องในแผนผังวิดเจ็ตของคุณซึ่งสามารถเข้าถึงได้จาก BuildContext
มิฉะนั้น จะใช้ผู้รับมอบสิทธิ์ชาวจีนเริ่มต้น
ภาษาของผู้รับมอบสิทธิ์ข้อความที่ฝังไว้คือ:
หากคุณต้องการใช้ผู้รับมอบสิทธิ์ข้อความแบบกำหนดเอง/คงที่ ให้ส่งผ่าน CameraPickerConfig.textDelegate
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
ใช้ CameraPickerConfig
สำหรับพฤติกรรมการเลือกเพิ่มเติม
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
ฟิลด์ใน CameraPickerConfig
:
ชื่อ | พิมพ์ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|---|
เปิดใช้งานการบันทึก | bool | เครื่องมือเลือกสามารถบันทึกวิดีโอได้หรือไม่ | false |
เปิดใช้งานการบันทึกเท่านั้น | bool | ผู้เลือกสามารถบันทึกวิดีโอได้เท่านั้นหรือไม่ ใช้ได้เฉพาะเมื่อ enableRecording เป็น true เท่านั้น | false |
เปิดใช้งาน TapRecording | bool | อนุญาตให้บันทึกสามารถเริ่มต้นด้วยการแตะเพียงครั้งเดียวหรือไม่ ใช้ได้เฉพาะเมื่อ enableRecording เป็น true เท่านั้น | false |
เปิดใช้งานเสียง | bool | ไม่ว่าตัวเลือกควรบันทึกเสียงหรือไม่ ใช้ได้เฉพาะกับการบันทึกเท่านั้น | true |
เปิดใช้งานSetExposure | bool | ผู้ใช้สามารถตั้งค่าจุดรับแสงโดยการแตะได้หรือไม่ | true |
EnableExposureControlOnPoint | bool | ผู้ใช้สามารถปรับแสงตามจุดที่ตั้งไว้ได้หรือไม่ | true |
เปิดใช้งาน PinchToZoom | bool | ผู้ใช้สามารถซูมกล้องด้วยการบีบนิ้วได้หรือไม่ | true |
เปิดใช้งานPullToZoomInRecord | bool | ผู้ใช้สามารถซูมโดยการดึงขึ้นเมื่อบันทึกวิดีโอได้หรือไม่ | true |
เปิดใช้งานScaledPreview | bool | ควรปรับขนาดการแสดงตัวอย่างกล้องระหว่างการถ่ายภาพหรือไม่ | false |
ควรลบPreviewFile | bool | ไฟล์ตัวอย่างจะถูกลบหรือไม่เมื่อป๊อปอัป | false |
ควรแสดงตัวอย่างวิดีโออัตโนมัติ | bool | ควรเล่นวิดีโอทันทีในหน้าตัวอย่างหรือไม่ | true |
ระยะเวลาการบันทึกสูงสุด | Duration? | ระยะเวลาสูงสุดของกระบวนการบันทึกวิดีโอ | const Duration(seconds: 15) |
ระยะเวลาการบันทึกขั้นต่ำ | Duration | ระยะเวลาขั้นต่ำของกระบวนการบันทึกวิดีโอ | const Duration(seconds: 1) |
ธีม | ThemeData? | ข้อมูลธีมสำหรับเครื่องมือเลือก | CameraPicker.themeData(wechatThemeColor) |
ข้อความมอบหมาย | CameraPickerTextDelegate? | ตัวแทนข้อความที่ควบคุมข้อความในวิดเจ็ต | CameraPickerTextDelegate |
ความละเอียดที่ตั้งไว้ล่วงหน้า | ResolutionPreset | ความละเอียดปัจจุบันสำหรับกล้อง | ResolutionPreset.ultraHigh |
กล้องQuarterTurns | int | จำนวนการหมุนไตรมาสตามเข็มนาฬิกาควรหมุนมุมมองกล้อง | 0 |
imageFormatGroup | ImageFormatGroup | อธิบายผลลัพธ์ของรูปแบบภาพ Raw | ImageFormatGroup.unknown |
ทิศทางเลนส์ที่ต้องการ | CameraLensDirection | ควรใช้เลนส์ทิศทางใดเมื่อใช้กล้องครั้งแรก | CameraLensDirection.back |
lockCaptureOrientation | DeviceOrientation? | ควรล็อคกล้องให้อยู่ในทิศทางที่กำหนดระหว่างการถ่ายภาพหรือไม่ | โมฆะ |
เบื้องหน้าผู้สร้าง | ForegroundBuilder? | เครื่องมือสร้างวิดเจ็ตเบื้องหน้าซึ่งจะครอบคลุมการแสดงตัวอย่างกล้องทั้งหมด | โมฆะ |
ดูตัวอย่าง TransformBuilder | PreviewTransformBuilder? | เครื่องมือสร้างวิดเจ็ตที่จะแปลงการแสดงตัวอย่างกล้อง | โมฆะ |
onEntitySaving | EntitySaveCallback? | ประเภทการโทรกลับกำหนดสำหรับการบันทึกเอนทิตีในตัวแสดง | โมฆะ |
บนข้อผิดพลาด | CameraErrorHandler? | ตัวจัดการข้อผิดพลาดเมื่อเกิดข้อผิดพลาดใดๆ ในระหว่างกระบวนการเบิกสินค้า | โมฆะ |
onXFileCaptured | XFileCapturedCallback? | คำจำกัดความประเภทการโทรกลับเมื่อ XFile ถูกจับโดยกล้อง | โมฆะ |
onMinimumRecordDurationNotMet | VoidCallback? | การโทรกลับเมื่อการบันทึกไม่ถึงระยะเวลาการบันทึกขั้นต่ำ | โมฆะ |
onPick ยืนยันแล้ว | void Function(AssetEntity)? | การโทรกลับเมื่อถ่ายภาพหรือวิดีโอได้รับการยืนยัน | โมฆะ |
สิทธิ์คำขอตัวเลือก | PermissionRequestOption? | ตัวเลือกการขออนุญาตเมื่อบันทึกไฟล์ที่บันทึกโดยใช้แพ็คเกจ photo_manager | โมฆะ |
State
ที่กำหนดเอง อินเทอร์เฟซผู้ใช้ทั้งหมดสามารถปรับแต่งได้ผ่าน State
ที่กำหนดเอง ได้แก่ :
CameraPickerState
CameraPickerViewerState
หลังจากเอาชนะ State
แล้ว ให้ส่งผ่านวิธีการเลือก โดยเจาะจงมากขึ้น:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
ขณะนี้การแสดงตัวอย่างไม่ได้รับการซิงค์อย่างถูกต้องบน iOS คุณสามารถดูรายละเอียดเพิ่มเติมได้ในฉบับนี้: flutter/flutter#89216 นอกเหนือจากนั้น โปรดส่งประเด็นเพื่ออธิบายคำถามของคุณ
ขอขอบคุณผู้คนที่แสนวิเศษเหล่านี้ (คีย์อีโมจิ):
อเล็กซ์ หลี่ - - - - | ไช่จิงหลง - | ลาเอล | mjl0602 - | นามแฝงวัง - | เหลือการเข้ารหัส - | เลืองเดอะวินห์ |
luomo-โปร ? | เลโอนาร์โดจู | เหงียนฟุกลอย - | อามอส - | ตี๋ยูจูน |
โครงการนี้เป็นไปตามข้อกำหนดของผู้มีส่วนร่วมทั้งหมด ยินดีมีส่วนร่วมทุกรูปแบบ!