shaped_plugin 0.1.6 copy "shaped_plugin: ^0.1.6" to clipboard
shaped_plugin: ^0.1.6 copied to clipboard

ShapedSdkCamera is a Flutter component that captures body images in the correct pattern to submit for Shaped IA API in order predict body measurements and body fat percentage.

ShapedSdkCamera #

Descrição #

O ShapedSdkCamera é um componente Flutter para captura de imagens e detecção de poses corporais. Ele permite capturar imagens de um usuário enquanto valida a postura e fornece feedback baseado na posição do corpo.

Instalação #

Para utilizar o ShapedSdkCamera, adicione o plugin ao seu projeto Flutter. No seu pubspec.yaml, adicione:

dependencies:
  shaped_plugin: ^0.1.6

Dentro do seu projeto no arquivo local.properties, adicione suas credenciais disponibilizadas pelo administrador para garantir que as dependências privadas sejam resolvidas corretamente:

GITHUB_USER=seu_usuario
GITHUB_TOKEN=seu_token

Outro passo é a configuração para utilizar o ShapedSdkCamera no IOS, para isso vá até seu PodFile e cole o trecho a seguir, pode ser logo após platform :ios, 'xx.x':

use_simulator = ENV["USE_SIMULATOR"] == "true"
cocoapods_source = "https://cdn.cocoapods.org/"
shaped_source = use_simulator ?
  "https://github.com/shapeddev/shaped-sdk-ios-specs-emulator.git" :
  "https://github.com/shapeddev/shaped-sdk-ios-specs.git"

source cocoapods_source
source shaped_source

Em seguida, execute:

flutter pub get

Permissões Necessárias #

Para utilizar a câmera, adicione as seguintes permissões nos arquivos de configuração do seu projeto:

Android #

No arquivo AndroidManifest.xml, adicione:

<uses-permission android:name="android.permission.CAMERA"/>

iOS #

No arquivo Info.plist (localizado em ios/Runner/Info.plist), adicione:

<key>NSCameraUsageDescription</key>
<string>Este aplicativo precisa acessar a câmera para capturar imagens.</string>

Uso #

Importação #

No seu arquivo Dart, importe o pacote:

import 'package:shaped_plugin/shaped_plugin.dart';

Exemplo de Implementação #

Abaixo, um exemplo de como utilizar o ShapedSdkCamera dentro de um StatefulWidget:

import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:shaped_plugin/shaped_plugin.dart';

class CameraPage extends StatefulWidget {
  @override
  _CameraPageState createState() => _CameraPageState();
}

class _CameraPageState extends State<CameraPage> {
  bool _frontalValidation = true;
  List<Uint8List> _capturedImages = [];

  void _handleImages(List<Uint8List> capturedImages, bool frontalValidation) {
    setState(() {
      _capturedImages = capturedImages;
      _frontalValidation = frontalValidation;
    });
  }

  Future<void> _changeFrontalValidation(bool frontalValidation) async {
    setState(() {
      _frontalValidation = frontalValidation;
    });
  }

  void _handleErrors(List<String> errors, int? countdown) {
    print("Erros detectados: $errors");
  }

  void _onValidateDeviceLevel(bool validLevel) {
    if (!validLevel) {
      print("Dispositivo não está nivelado corretamente.");
    }
  }

  Future<dynamic> showDialogCustom(
    String description,
    String labelButton,
    void Function() clickButton,
    bool barrierDismissible,
    bool buttonWide,
  ) async {
    return showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: Text(description),
        actions: [
          TextButton(onPressed: clickButton, child: Text(labelButton)),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Detecção Corporal")),
      body: Center(
        child: ShapedSdkCamera(
          frontalValidation: _frontalValidation,
          capturedImages: _capturedImages,
          onImagesCaptured: _handleImages,
          onChangeFrontalValidation: _changeFrontalValidation,
          onDeviceLevel: _onValidateDeviceLevel,
          onErrorsImage: _handleErrors,
          showDialog: showDialogCustom,
        ),
      ),
    );
  }
}

Parâmetros do ShapedSdkCamera #

Parâmetro Tipo Descrição
frontalValidation bool Define se a validação frontal está ativada.
capturedImages List<Uint8List> Lista de imagens capturadas.
onImagesCaptured Function(List<Uint8List>, bool) Callback acionado ao capturar imagens.
onChangeFrontalValidation Future<void> Function(bool) Callback acionado quando há mudança na validação frontal.
onDeviceLevel Function(bool) Callback para informar se o dispositivo está nivelado.
onErrorsImage Function(List<String>, int?) Callback acionado ao detectar erros na captura.
showDialog Future<dynamic> Function(String, String, void Function(), bool, bool) Função para exibir diálogos personalizados.
currentLocale String? Idioma a ser usado pelo módulo nativo (ex: "pt-BR", "pt", "en-US", "en", "es-ES", "es", "pt-PT"). Te como default "pt-BR"

Configuração para utilizar o ShapedSdkCamera em ambiente de desenvolvimento mockado #

Durante o desenvolvimento, é possível utilizar uma versão mockada da SDK, que simula a captura de imagens e a detecção de pose corporal sem precisar da câmera real ou de um dispositivo físico.
Esse modo é ideal para testes em simuladores iOS e para desenvolvimento de interface sem dependência do hardware.

O comportamento é controlado pela variável de ambiente USE_SIMULATOR.

🍎 iOS

No arquivo ios/Podfile, adicione o seguinte trecho logo após platform :ios, 'xx.x':

use_simulator = ENV["USE_SIMULATOR"] == "true"
cocoapods_source = "https://cdn.cocoapods.org/"
shaped_source = use_simulator ?
  "https://github.com/shapeddev/shaped-sdk-ios-specs-emulator.git" :
  "https://github.com/shapeddev/shaped-sdk-ios-specs.git"

source cocoapods_source
source shaped_source

Em seguida, execute um dos comandos abaixo:

# ✅ Para modo mockado (simulador)
USE_SIMULATOR=true cd ios && pod install

# 🚀 Para modo real (produção)
unset USE_SIMULATOR && cd ios && pod install

🤖 Android

No Android, a variável USE_SIMULATOR também pode ser usada para indicar o ambiente.
Ela pode ser definida em qualquer um dos seguintes locais:

  • Nas variáveis de ambiente do Flutter:

    USE_SIMULATOR=true flutter run
    
  • Ou no arquivo android/local.properties:

    USE_SIMULATOR=true
    

Considerações Finais #

O ShapedSdkCamera fornece uma interface robusta para captura e validação de imagens corporais, podendo ser facilmente integrado a qualquer projeto Flutter. Certifique-se de conceder as permissões necessárias para a câmera antes de usá-lo.

1
likes
140
points
237
downloads

Publisher

unverified uploader

Weekly Downloads

ShapedSdkCamera is a Flutter component that captures body images in the correct pattern to submit for Shaped IA API in order predict body measurements and body fat percentage.

Repository (GitHub)

Documentation

API reference

License

unknown (license)

Dependencies

cupertino_icons, flutter, path_provider, permission_handler

More

Packages that depend on shaped_plugin

Packages that implement shaped_plugin