camfocus 0.2.8 copy "camfocus: ^0.2.8" to clipboard
camfocus: ^0.2.8 copied to clipboard

unlisted

A Flutter plugin to control the camera's focus distance, autofocus, and zoom levels (0.5x, 1x, etc.) on Android devices.

example/lib/main.dart

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

import 'package:flutter/services.dart';
import 'package:camfocus/camfocus.dart';

void main() {
  runApp(CameraApp());
}

class CameraApp extends StatefulWidget {
  @override
  _CameraAppState createState() => _CameraAppState();
}

class _CameraAppState extends State<CameraApp> {
  static const MethodChannel _channel = MethodChannel('camfocus');
  bool _isCameraReady = false;
  double _focusDistance = 0.0;
  bool _autoFocusEnabled = true;
  double _zoomFactor = 1.0;
  String _photoPath = "";

  @override
  void initState() {
    super.initState();
    _initializeCamera();
  }

  Future<void> _initializeCamera() async {
    try {
      bool cameraReady = await _channel.invokeMethod('initializeCamera');
      setState(() {
        _isCameraReady = cameraReady;
      });
    } catch (e) {
      print('Erro ao inicializar a câmera: $e');
    }
  }

  Future<void> _setFocusDistance(double distance) async {
    try {
      await _channel.invokeMethod('setFocusDistance', {'distance': distance});
      setState(() {
        _focusDistance = distance;
      });
    } catch (e) {
      print('Erro ao ajustar a distância de foco: $e');
    }
  }

  Future<void> _setAutoFocus(bool enabled) async {
    try {
      await _channel.invokeMethod('setAutoFocus', {'enabled': enabled});
      setState(() {
        _autoFocusEnabled = enabled;
      });
    } catch (e) {
      print('Erro ao ajustar o foco automático: $e');
    }
  }

  Future<void> _setZoom(double zoomFactor) async {
    try {
      await _channel.invokeMethod('setZoom', {'zoomFactor': zoomFactor});
      setState(() {
        _zoomFactor = zoomFactor;
      });
    } catch (e) {
      print('Erro ao ajustar o zoom: $e');
    }
  }

  Future<void> _takePicture() async {
    try {
      String path = await _channel.invokeMethod('takePicture');
      setState(() {
        _photoPath = path;
      });
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Foto salva em: $_photoPath')),
      );
    } catch (e) {
      print('Erro ao capturar foto: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Controle da Câmera'),
        ),
        body: Column(
          children: [
            if (_isCameraReady)
              AspectRatio(
                aspectRatio: 16 / 9,
                child: AndroidView(
                  viewType: 'camfocus_preview',
                ),
              ),
            SizedBox(height: 20),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Foco Manual: '),
                Slider(
                  value: _focusDistance,
                  min: 0.0,
                  max: 10.0,
                  divisions: 100,
                  onChanged: _isCameraReady ? _setFocusDistance : null,
                ),
                Text('${_focusDistance.toStringAsFixed(2)}'),
              ],
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Auto Foco: '),
                Switch(
                  value: _autoFocusEnabled,
                  onChanged: _isCameraReady ? _setAutoFocus : null,
                ),
              ],
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Zoom: '),
                Slider(
                  value: _zoomFactor,
                  min: 1.0,
                  max: 10.0,
                  divisions: 100,
                  onChanged: _isCameraReady ? _setZoom : null,
                ),
                Text('${_zoomFactor.toStringAsFixed(1)}x'),
              ],
            ),
            ElevatedButton(
              onPressed: _isCameraReady ? _takePicture : null,
              child: Text('Tirar Foto'),
            ),
            if (_photoPath.isNotEmpty)
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text('Foto salva em: $_photoPath'),
              ),
          ],
        ),
      ),
    );
  }
}
0
likes
0
points
128
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to control the camera's focus distance, autofocus, and zoom levels (0.5x, 1x, etc.) on Android devices.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on camfocus

Packages that implement camfocus