此包提供了一些灵活且完全可定制的相机小部件。
特点
使用相机来
- 拍照
- 录制视频
- 切换前后摄像头
入门
首先,在您的 pubspec.yaml 文件中将 camera 添加为依赖项。
iOS
* camera 插件可编译用于任何版本的 iOS,但其功能需要 iOS 10 或更高版本。如果编译用于 iOS 9,请确保在通过任何 camera 插件功能之前,以编程方式检查设备上运行的 iOS 版本。例如,device_info_plus 插件可用于检查 iOS 版本。
向 ios/Runner/Info.plist 添加两行
- 一行是键为
Privacy - Camera Usage Description以及使用说明。 - 一行带有键
Privacy - Microphone Usage Description和使用说明。
如果将Info.plist作为文本进行编辑,请添加
<key>NSCameraUsageDescription</key>
<string>your usage description here</string>
<key>NSMicrophoneUsageDescription</key>
<string>your usage description here</string>
Android
在您的 android/app/build.gradle 文件中将最低 Android sdk 版本更改为 21(或更高)。
minSdkVersion 21
用法
import 'package:flutter/material.dart';
import 'package:flutter_soft_camera/flutter_soft_camera.dart';
import 'package:camera/camera.dart';
late List<CameraDescription> _cameras;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
_cameras = await availableCameras();
runApp(const CameraApp());
}
class CameraApp extends StatefulWidget {
const CameraApp({Key? key}) : super(key: key);
@override
State<CameraApp> createState() => _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
late CameraController controller;
@override
void initState() {
super.initState();
controller = CameraController(_cameras[0], ResolutionPreset.max);
controller.initialize().then((_) {
if (!mounted) {
return;
}
setState(() {});
}).catchError((Object e) {
if (e is CameraException) {
switch (e.code) {
case 'CameraAccessDenied':
print('User denied camera access.');
break;
default:
print('Handle other errors.');
break;
}
}
});
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (!controller.value.isInitialized) {
return Container();
}
return MaterialApp(
home: Scaffold(body: SoftCamera(controller: controller)),
);
}
}