欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Flutter - 原生交互 - 相机Camera - 曝光,缩放,录制视频

Flutter - 原生交互 - 相机Camera - 曝光,缩放,录制视频

2025/6/20 20:14:42 来源:https://blog.csdn.net/iJason92/article/details/148697082  浏览:    关键词:Flutter - 原生交互 - 相机Camera - 曝光,缩放,录制视频

曝光

Flutter上CupertinoSlider组件的样式是iOS上的Slider,使用该组件控制曝光量,
Camera插件提供的API是CameraController

Future<double> setExposureOffset(double offset) async {
...
}

最后调用iOS端的系统方法控制曝光值

- (void)setExposureTargetBias:(float)bias completionHandler:(nullable void (^)(CMTime syncTime))handler API_AVAILABLE(ios(8.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(macos, visionos);
class TakePictureScreenState extends State<TakePictureScreen> {/// 设置默认值double currentExposure = 0.0;/// 是否显示曝光Slider组件bool _showedExposure = false;.../// 使用CupertinoSliderWidget showExposure() {if (_showedExposure) {return SizedBox(height: 44,width: MediaQuery.of(context).size.width,child: CupertinoSlider(/// 滑动Slider时触发的事件onChanged: (value) {setState(() {/// 调整相机的曝光值_controller.setExposureOffset(value);currentExposure = value;});},min: -3, /// 设置作用范围max: 3,value: currentExposure, /// 当前Slider显示的值),);}return SizedBox.shrink();}
}
202506131634.gif

两指手势缩放

系统的相机可以双指进行缩放操作,在Flutter中可以在GestureDetector来实现

/// 最小缩放比例
double _minAvailableZoom = 1.0;
/// 最大缩放比例
double _maxAvailableZoom = 1.0;
/// 记录当前的缩放比例
double _currentScale = 1.0;
/// 当前的基础值
double _baseScale = 1.0;Listener(onPointerDown: (_) => _pointers++,onPointerUp: (_) => _pointers--, // 用来判断是否双指child: CameraPreview(_controller,// Creates a widget that defers its building until layout.// 布局完成再创建child: LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) {return GestureDetector(// Opaque targets can be hit by hit tests, causing them to both receive events within their bounds and prevent targets visually behind them from also receiving events.// 相机Widget能收到手势behavior: HitTestBehavior.opaque, // 设置开始缩放事件onScaleStart: _handleScaleStart,// 设置缩放值变化事件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词