Flutter Framework
Para começar a operar localmente com a Redelcom usando um aplicativo Flutter, siga as etapas abaixo.
Instalar e configurar plugins
Para estabelecer comunicação com o sistema RDCPass, você precisará instalar os plugins adicionando o seguinte bloco ao pub.dev
:
flutter
Package_info 0.4.3+4 => (https:// pub.dev/packages/package_info) android_intent 0.3.7+7 => (https:// pub.dev/packages/android_intent)
Uma vez instalados, você precisará iniciar a configuração importando os pacotes em main.dart
:
flutter
import 'package:package_info/package_info.dart'; import 'package:android_intent/android_intent.dart';
Enviar e receber Intents de um aplicativo nativo Android
Para processar pagamentos, primeiro você precisa implementar o método que permite enviar um intent para um aplicativo nativo Android:
flutter
Future<void> _intentSend() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); setState(() { String packageName = packageInfo.packageName; final AndroidIntent intent = AndroidIntent( action: 'android.intent.action.SEND', package: 'redelcom.cl.rdcpass ', arguments: <String, dynamic>{ 'packageName': packageName, 'className': '$packageName.MainActivity', 'monto': '200', //pasar la cantidad del envío }, componentName: 'redelcom.cl.rdcpass.MainActivity', ); intent.launch(); }); }
Para poder obter a resposta a esse intent, você precisa primeiro adicionar o seguinte bloco em main.dart
:
flutter
static const platform = const MethodChannel('app.channel.shared.data'); String data = "No hay datos"; @Override void initState() { super.initState(); getSharedIntent(); } getSharedIntent() async { var sharedData = await platform.invokeMethod("getSharedText"); if (sharedData != null) { setState(() { data = sharedData; // Do something… }); } }
Em seguida, adicione o seguinte bloco em MainActivity.java
:
flutter
private String sharedIntent; private static final String CHANNEL = "app.channel.shared.data"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { Intent intent = getIntent(); String action = intent.getAction(); if (action != null && Intent.ACTION_SEND.equals(action)) { handleSend(intent); } } catch (Exception e) { e.printStackTrace(); } } @Override public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL) .setMethodCallHandler( (call, result) -> { if (call.method.contentEquals("getSharedText")) { result.success(sharedIntent); sharedIntent = null; } } ); } void handleSend(Intent intent) { sharedIntent = intent.getStringExtra(Intent.EXTRA_TEXT); }
Por fim, adicione o intent-filter (Activity) ao arquivo AndroidManifest.xml
do aplicativo compilado.
flutter
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/*" /> </intent-filter>
É isso! Agora você pode começar a operar com a Redelcom a partir do seu aplicativo Flutter.