此包提供了一些灵活且完全可定制的相机小部件。

特点

使用相机来

  • 拍照
  • 录制视频
  • 切换前后摄像头

入门

首先,在您的 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)),
    );
  }
}

附加信息

GitHub

查看 Github