Skip to content

Commit 4ef129d

Browse files
authored
♻️ Split and expose states (#113)
1 parent ee715de commit 4ef129d

15 files changed

+1868
-1851
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ that can be found in the LICENSE file. -->
44

55
# Changelog
66

7+
## 3.5.0-dev.1
8+
9+
### New features
10+
11+
- Support customize UI by override `State`s. (#113)
12+
13+
### Improvements
14+
15+
- Expose multiple internal widgets. (#113)
16+
717
## 3.4.0
818

919
### New features

README-ZH.md

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -98,31 +98,41 @@ final AssetEntity? entity = await CameraPicker.pickFromCamera(
9898

9999
`CameraPickerConfig` 的成员说明:
100100

101-
| 参数名 | 类型 | 描述 | 默认值 |
102-
|------------------------------|-----------------------------|----------------------------------------------------|----------------------------------------|
103-
| enableRecording | `bool` | 选择器是否可以录像 | `false` |
104-
| onlyEnableRecording | `bool` | 选择器是否仅可以录像。只在 `enableRecording``true` 时有效。 | `false` |
105-
| enableTapRecording | `bool` | 选择器是否可以单击录像。只在 `onlyEnableRecording``true` 时生效。 | `false` |
106-
| enableAudio | `bool` | 选择器是否需要录制音频。只在 `enableRecording``true` 时有效。 | `true` |
107-
| enableSetExposure | `bool` | 用户是否可以在界面上通过点击设定曝光点 | `true` |
108-
| enableExposureControlOnPoint | `bool` | 用户是否可以根据已经设置的曝光点调节曝光度 | `true` |
109-
| enablePinchToZoom | `bool` | 用户是否可以在界面上双指缩放相机对焦 | `true` |
110-
| enablePullToZoomInRecord | `bool` | 用户是否可以在录制视频时上拉缩放 | `true` |
111-
| shouldDeletePreviewFile | `bool` | 返回页面时是否删除预览文件 | `false` |
112-
| shouldAutoPreviewVideo | `bool` | 在预览时是否直接播放视频 | `false` |
113-
| maximumRecordingDuration | `Duration` | 录制视频最长时长 | `const Duration(seconds: 15)` |
114-
| theme | `ThemeData?` | 选择器的主题 | `CameraPicker.themeData(C.themeColor)` |
115-
| textDelegate | `CameraPickerTextDelegate?` | 控制部件中的文字实现 | `DefaultCameraPickerTextDelegate` |
116-
| resolutionPreset | `ResolutionPreset` | 相机的分辨率预设 | `ResolutionPreset.max` |
117-
| cameraQuarterTurns | `int` | 摄像机视图顺时针旋转次数,每次 90 度 | `0` |
118-
| imageFormatGroup | `ImageFormatGroup` | 输出图像的格式描述 | `ImageFormatGroup.unknown` |
119-
| preferredLensDirection | `CameraLensDirection` | 首次使用相机时首选的镜头方向 | `CameraLensDirection.back` |
120-
| lockCaptureOrientation | `DeviceOrientation?` | 摄像机在拍摄时锁定的旋转角度 | null |
121-
| foregroundBuilder | `ForegroundBuilder?` | 覆盖在相机预览上方的前景构建 | null |
122-
| previewTransformBuilder | `PreviewTransformBuilder?` | 对相机预览做变换的构建 | null |
123-
| onEntitySaving | `EntitySaveCallback?` | 在查看器中保存图片时的回调 | null |
124-
| onError | `CameraErrorHandler?` | 拍摄照片过程中的自定义错误处理 | null |
125-
| onXFileCaptured | `XFileCapturedCallback?` | 拍摄文件生成后的回调 | null |
101+
| 参数名 | 类型 | 描述 | 默认值 |
102+
|------------------------------|-----------------------------|----------------------------------------------------|--------------------------------------------|
103+
| enableRecording | `bool` | 选择器是否可以录像 | `false` |
104+
| onlyEnableRecording | `bool` | 选择器是否仅可以录像。只在 `enableRecording``true` 时有效。 | `false` |
105+
| enableTapRecording | `bool` | 选择器是否可以单击录像。只在 `onlyEnableRecording``true` 时生效。 | `false` |
106+
| enableAudio | `bool` | 选择器是否需要录制音频。只在 `enableRecording``true` 时有效。 | `true` |
107+
| enableSetExposure | `bool` | 用户是否可以在界面上通过点击设定曝光点 | `true` |
108+
| enableExposureControlOnPoint | `bool` | 用户是否可以根据已经设置的曝光点调节曝光度 | `true` |
109+
| enablePinchToZoom | `bool` | 用户是否可以在界面上双指缩放相机对焦 | `true` |
110+
| enablePullToZoomInRecord | `bool` | 用户是否可以在录制视频时上拉缩放 | `true` |
111+
| shouldDeletePreviewFile | `bool` | 返回页面时是否删除预览文件 | `false` |
112+
| shouldAutoPreviewVideo | `bool` | 在预览时是否直接播放视频 | `false` |
113+
| maximumRecordingDuration | `Duration` | 录制视频最长时长 | `const Duration(seconds: 15)` |
114+
| theme | `ThemeData?` | 选择器的主题 | `CameraPicker.themeData(wechatThemeColor)` |
115+
| textDelegate | `CameraPickerTextDelegate?` | 控制部件中的文字实现 | `CameraPickerTextDelegate` |
116+
| resolutionPreset | `ResolutionPreset` | 相机的分辨率预设 | `ResolutionPreset.max` |
117+
| cameraQuarterTurns | `int` | 摄像机视图顺时针旋转次数,每次 90 度 | `0` |
118+
| imageFormatGroup | `ImageFormatGroup` | 输出图像的格式描述 | `ImageFormatGroup.unknown` |
119+
| preferredLensDirection | `CameraLensDirection` | 首次使用相机时首选的镜头方向 | `CameraLensDirection.back` |
120+
| lockCaptureOrientation | `DeviceOrientation?` | 摄像机在拍摄时锁定的旋转角度 | null |
121+
| foregroundBuilder | `ForegroundBuilder?` | 覆盖在相机预览上方的前景构建 | null |
122+
| previewTransformBuilder | `PreviewTransformBuilder?` | 对相机预览做变换的构建 | null |
123+
| onEntitySaving | `EntitySaveCallback?` | 在查看器中保存图片时的回调 | null |
124+
| onError | `CameraErrorHandler?` | 拍摄照片过程中的自定义错误处理 | null |
125+
| onXFileCaptured | `XFileCapturedCallback?` | 拍摄文件生成后的回调 | null |
126+
127+
### 使用自定义的 `State`
128+
129+
所有的用户界面都可以通过自定义 `State` 实现,包括:
130+
- `CameraPickerState`
131+
- `CameraPickerViewerState`
132+
133+
在完成 `State` 的重载后,可以在调用时进行构建,具体来说:
134+
- `CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());`
135+
- `CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());`
126136

127137
## 常见问题 💭
128138

0 commit comments

Comments
 (0)