image

Omni + Vitta | Módulos de Integração em Flutter BETA

Guia de Integração da Biblioteca Omni Saúde para Flutter. Build 1.3.0 Beta

Overview

Este documento tem como objetivo elencar a documentação oficial para implantação do Omni SDK para Flutter, abrangendo pontos estruturais para a integração do package ao pipeline do seu projeto, parâmetros obrigatórios e boas práticas.

1. Preparação para integração

É de extrema importância que antes do início da implementação, ficar atento aos requisitos mínimos para que o plugin se adeque corretamente. Eles devem ser seguidos estritamente para garantir o regular funcionamento.

1.1 Requisitos mínimos e Setup

image
Path Nome Versão necessária
android/app/build.gradle minSDK >= 21
android/app/build.gradle targetSDK >= 33
android/app/build.gradle compileSDKVersion >= 33

✅ Seu arquivo app/build.gradle deve se parecer com isto:

// [...] inicio do código

android {
    namespace "com.example.flutter_application_1"
    compileSdkVersion 33
    ndkVersion flutter.ndkVersion

// [...] meio do código

    defaultConfig {
        applicationId "com.example.flutter_application_1"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

// [...] restante do código
}


image
Path Nome Versão necessária
ios/Podfile iOS Version >= 12

✅ Seu Podfile deve se parecer com isto:

platform :ios, '12.0'  # ou versão maior

# Adicione a linha a seguir, caso não possua:
$iOSVersion = '12.0'  # ou versão maior

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7"
    config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
  end
  
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    
    target.build_configurations.each do |config|
      if Gem::Version.new($iOSVersion) > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
      end
    end
  end
end

⚠️ Importante

Além deste requerimento mínimo de versão nos dispositivos iOS, é necessário justificar o uso da permissão de câmera caso não esteja justificado. O módulo utiliza isto na etapa de identificação do remédio, para isso deve ser feita uma alteração no arquivo Info.plist do projeto, como a seguir:

[...] inicio do código
	<string>$(FLUTTER_BUILD_NUMBER)</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	 <key>NSCameraUsageDescription</key> # --> Adicione esta linha
	<string>Permita o acesso à câmera para capturar fotos dos medicamentos e prescrições. Isso permitirá que você tire fotos de seus medicamentos e envie imagens de receitas médicas para armazená-las em sua carteira digital de medicamentos.</string> # --> Adicione esta linha
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
[...] restante do código

3. Utilizando a chamada dos Widgets para acionar o SDK

Após a importação do pacote em seu pubspec.yaml, o processo de chamada dos Widgets para iniciar os processos precisam de muita atenção. A referência ao pacote deverá ser importada no arquivo .dart desejado, e deve-se assegurar o fato de já ter retido em alguma variável os valores que foram consumidos na API no seu respectivo documento, são os valores ```token``` e ```omniId```.

✅ Deve-se importar a referência no arquivo em que estão os widgets que serão chamados, exemplo:

import 'package:omni_vitta_flutter/omni_vitta_flutter.dart';
[...] restante da classe

Processo de compra

A função chamada para iniciação do processo de compra possuirá inicialmente cinco parâmetros obrigatórios, são eles: ‎
Parâmetro Tipo Função
token String Token validador para inicio do processo
omniId String Armazenar ID do usuário que efetua a compra
prescription List Objeto da(s) prescrição(ões) utilizada durante a compra
onFinish VoidCallback Função definida para ser executada após finalização do processo Omni
isProd bool Alterne para true caso queira rodar no ambiente de produção, e false para homologação
medications Map<String, dynamic> Definido para ser enviado o JSON com os dados da receita afim de localizar os medicamentos

3.2 Importando o package para a classe desejada

✅ Deve-se importar a referência no arquivo em que o OmniHealthBuyProcess() será chamado, exemplo:

import 'package:omni_vitta_flutter/omni_vitta_flutter.dart';
[...] restante da classe

E então, acionar o widget, por exemplo:

import 'package:omni_vitta_flutter/omni_vitta_flutter.dart';

class ExampleView extends StatelessWidget {
Widget build(BuildContext context) {
return TextButton(
	child: Text('Call Omni Process')
       onPressed: () async {
    	final parameters = await exampleAllRequiredParameters(); <- sua função para pegar os dados necessários.

Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => OmniHealthBuyProcess(
          token: parameters.token,
          omniId: parameters.omniId,
          prescription: parameters.prescription,
          onFinish: () => funcaoAoFinalizarExemplo(),
          isProd: false,
          medications: parameters.prescriptionData
       ),
      ),
     ),
    }
   );
 }
}

Histórico de compras

A função chamada para iniciação do histórico de compras possuirá inicialmente três parâmetros obrigatórios, são eles: ‎
Parâmetro Tipo Função
token String Token validador para inicio do processo
omniId String Armazenar ID do usuário que efetua a compra
isProd bool Alterne para true caso queira rodar no ambiente de produção, e false para homologação

✅ Deve-se importar a referência no arquivo em que o OmniHealthBuyHistory() será chamado, exemplo:

import 'package:omni_vitta_flutter/omni_vitta_flutter.dart';
[...] restante da classe

E então, acionar o widget, por exemplo:

import 'package:omni_vitta_flutter/omni_vitta_flutter.dart';

class ExampleView extends StatelessWidget {
Widget build(BuildContext context) {
return TextButton(
	child: Text('Call Omni Process')
       onPressed: () async {
    	final parameters = await exampleAllRequiredParameters(); <- sua função para pegar os dados necessários.

Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => OmniHealthBuyHistory(
          token: parameters.token,
          omniId: parameters.omniId,
          isProd: false,
       ),
      ),
     ),
    }
   );
 }
}

Libraries

omni_vitta_flutter