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
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
}
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,
),
),
),
}
);
}
}