CameraController _controller;
List<CameraDescription> _availableCameras;
@override
void initState() {
super.initState();
_getAvailableCameras();
}
// get available cameras
Future<void> _getAvailableCameras() async{
WidgetsFlutterBinding.ensureInitialized();
_availableCameras = await availableCameras();
_initCamera(_availableCameras.first);
}
// init camera
Future<void> _initCamera(CameraDescription description) async{
_controller = CameraController(description, ResolutionPreset.max, enableAudio: true);
try{
await _controller.initialize();
// to notify the widgets that camera has been initialized and now camera preview can be done
setState((){});
}
catch(e){
print(e);
}
}
只需重新初始化相机控制器与一个新的相机描述按钮点击。
void _toggleCameraLens() {
// get current lens direction (front / rear)
final lensDirection = _controller.description.lensDirection;
CameraDescription newDescription;
if(lensDirection == CameraLensDirection.front){
newDescription = _availableCameras.firstWhere((description) => description.lensDirection == CameraLensDirection.back);
}
else{
newDescription = _availableCameras.firstWhere((description) => description.lensDirection == CameraLensDirection.front);
}
if(newDescription != null){
_initCamera(newDescription);
}
else{
print('Asked camera not available');
}
4条答案
按热度按时间xpcnnkqh1#
获取可用的摄像机并在initState()中使用其中一个摄像机初始化摄像机控制器。另外,将可用的相机存储到类变量中。
只需重新初始化相机控制器与一个新的相机描述按钮点击。
}
mznpcxlj2#
我有两个建议
1.请使用软件包camera_camera https://github.com/gabulsavul/camera_camera
它提供了一个很好的例子和很多功能。
您可以直接使用或修改此软件包。
此软件包的屏幕
1.官方示例代码
https://github.com/flutter/plugins/blob/master/packages/camera/example/lib/main.dart
通过此功能切换摄像头
你可以直接用这个例子
显示一行切换以选择摄像机
u0sqgete3#
你可以这样做:
eimct9ow4#
这是我的解决方案: