点按即可对焦 Flutter 相机

ele*_*nad 8 dart flutter

一个简单但非常复杂的问题:为 Flutter 相机添加点击对焦功能的最佳方法是什么?

我在整个万维网上搜索了有关优雅解决方案的内容,但一无所获。

你有想法吗?

Yur*_*i H 1

我可能会迟到,但你可以尝试adv_camera package

这是一个简单的例子:

import 'package:adv_camera/adv_camera.dart';
import 'package:flutter/material.dart';

class CameraApp extends StatefulWidget {
  final String id;

  const CameraApp({Key? key, required this.id}) : super(key: key);

  @override
  _CameraAppState createState() => _CameraAppState();
}

class _CameraAppState extends State<CameraApp> {
  List<String> pictureSizes = <String>[];
  String? imagePath;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('AdvCamera Example'),
      ),
      body: SafeArea(
        child: AdvCamera(
          initialCameraType: CameraType.rear,
          onCameraCreated: _onCameraCreated,
          onImageCaptured: (String path) {
            if (this.mounted)
              setState(() {
                imagePath = path;
              });
          },
          cameraPreviewRatio: CameraPreviewRatio.r16_9,
          focusRectColor: Colors.purple,
          focusRectSize: 200,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        heroTag: "capture",
        child: Icon(Icons.camera),
        onPressed: () {
          cameraController!.captureImage();
        },
      ),
    );
  }

  AdvCameraController? cameraController;

  _onCameraCreated(AdvCameraController controller) {
    this.cameraController = controller;

    this.cameraController!.getPictureSizes().then((pictureSizes) {
      setState(() {
        this.pictureSizes = pictureSizes ?? <String>[];
      });
    });
  }
}
Run Code Online (Sandbox Code Playgroud)