flutter_intelligence_sign3 0.0.1 copy "flutter_intelligence_sign3: ^0.0.1" to clipboard
flutter_intelligence_sign3: ^0.0.1 copied to clipboard

A wrapper of fraud-sdk android in flutter

example/lib/main.dart

import 'dart:ffi';

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

import 'package:flutter/services.dart';
import 'package:flutter_intelligence_sign3/flutter_intelligence_sign3.dart';
import 'package:flutter_intelligence_sign3/model/options.dart';
import 'package:flutter_intelligence_sign3/model/update_options.dart';
import 'package:flutter_intelligence_sign3_example/utils/log.dart';

import 'json_viewer.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MaterialApp(
    debugShowCheckedModeBanner: false,
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String initValue = "";
  String stop = "";
  String sessionID = "";
  var jsonData = Map<String, dynamic>();

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Sign3 SDK Flutter'),
        ),
        body: SingleChildScrollView(
          physics: BouncingScrollPhysics(),
          scrollDirection: Axis.vertical,
          child: Column(
            children: [
              Column(
                children: [
                  Text("INIT: $initValue"),
                  Text("STOP: $stop"),
                  Text("SESSION ID: $sessionID")
                ],
              ),

              SingleChildScrollView(
                scrollDirection: Axis.horizontal,
                child: Row(
                  children: [
                    ElevatedButton(
                        onPressed: () async {
                          await initSign3Sdk();
                        },
                        child: const Text("Init Sdk")
                    ),
                    ElevatedButton(
                        onPressed: () async {
                          await getIntelligence();
                        },
                        child: const Text("Get Intelligence")
                    ),
                    ElevatedButton(
                        onPressed: () async {
                          //showCustomDialog(context);
                        },
                        child: const Text("Update Options")
                    ),
                  ],
                ),
              ),
              // Container(
              //   height: jsonData.keys.length * JsonViewer.textSize * 40,
              //   child: Padding (
              //     padding: const EdgeInsets.all(8.0),
              //     child: JsonViewer(jsonData: jsonData),
              //   ),
              // ),
              SizedBox(
                width: 1,
                height: 500,
                child: Container(),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void showCustomDialog(BuildContext context) {
    TextEditingController phoneController = TextEditingController();
    TextEditingController idController = TextEditingController();

    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text('Update Options'),
          content: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              TextField(
                controller: phoneController,
                decoration: const InputDecoration(
                  labelText: 'Set Phone Number',
                ),
                keyboardType: TextInputType.number, // Set to number input type
              ),
              const SizedBox(height: 10),
              TextField(
                controller: idController,
                decoration: const InputDecoration(
                  labelText: 'Set ID',
                ),
                keyboardType: TextInputType.number, // Set to number input type
              ),
            ],
          ),
          actions: [
            ElevatedButton(
              onPressed: () async {
                if (phoneController.text.isEmpty || idController.text.isEmpty) {
                  ScaffoldMessenger.of(context).showSnackBar(
                    const SnackBar(
                      content: Text('Both fields must be filled out.'),
                    ),
                  );
                  return;
                }
                await updateOptions(getUpdatedOptions(phoneController.text, idController.text));
                await getIntelligence();
                Navigator.of(context).pop();
              },
              child: const Text('Update Options'),
            ),
          ],
        );
      },
    );
  }

  UpdateOptions getUpdatedOptions(String phone, String id) {
    Map<String, String> additionalAttributes = {
      "TRANSACTION_ID": "76381256165476154713",
      "DEPOSIT": "5000",
      "WITHDRAWAL": "2000",
      "METHOD": "UPI",
      "STATUS": "SUCCESS",
      "CURRENCY": "INR",
      "TIMESTAMP": DateTime.now().millisecondsSinceEpoch.toString(),
    };

    UpdateOptions updateOptions = UpdateOptionsBuilder()
        .setPhoneNumber(phone)
        .setUserId(id)
        .setPhoneInputType(PhoneInputType.GOOGLE_HINT)
        .setOtpInputType(OtpInputType.AUTO_FILLED)
        .setUserEventType(UserEventType.TRANSACTION)
        .setMerchantId("1234567890")
        .setAdditionalAttributes(additionalAttributes)
        .build();
    return updateOptions;
  }

  Future<void> initSign3Sdk() async {
    var init = await Sign3Intelligence.isSdkInitialized();
    var stopResult = await Sign3Intelligence.stop();
    var id = await Sign3Intelligence.getSessionId();
    setState(() {
      initValue = init.toString();
      stop = stopResult.toString();
      sessionID = id;
    });
  }

  Future<void> getIntelligence() async {
    try {
      var intelligence = await Sign3Intelligence.getIntelligence();
      var id = await Sign3Intelligence.getSessionId();
      setState(() {
        jsonData = intelligence.toJson();
        sessionID = id;
        initValue = "true";
      });
      Log.i("TAG_GET_INTELLIGENCE", intelligence.toJson().toString());
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text(e.toString()),
        ),
      );
      Log.i("TAG_GET_INTELLIGENCE_ERROR", e.toString());
    }
  }

  Future<void> updateOptions(UpdateOptions options) async {
    await Sign3Intelligence.updateOptions(options);
  }
}
6
likes
0
points
83
downloads

Publisher

unverified uploader

Weekly Downloads

A wrapper of fraud-sdk android in flutter

Homepage

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_intelligence_sign3

Packages that implement flutter_intelligence_sign3