yundian_alive 0.1.5 copy "yundian_alive: ^0.1.5" to clipboard
yundian_alive: ^0.1.5 copied to clipboard

outdated

yundian alive Flutter project.

example/lib/main.dart

import 'dart:convert';
import 'dart:ffi';
import 'dart:math';

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

import 'package:flutter/services.dart';
import 'package:yundian_alive/yundian_alive.dart';
import 'package:yundian_alive/yundian_ocr.dart';

import 'package:encrypt/encrypt.dart' as encrypt;

void main() {
  runApp(const MyApp());
}

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

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  String _token = 'Unknown';
  late String aliveResult = "";

  @override
  void initState() {
    super.initState();
    initSdk();
    getToken();
    initListener();
    initPlatformState();
  }

  void initListener() {
    YundianAlive.onAliveResultListener((event) {
      setState(() {
        aliveResult = event;
      });
      Map<String, dynamic> map = json.decode(event);
      var code = map['code'];
      var msg = map['msg'];
      if (code == "0") {
        print(map['score']);
        print(map['featureImageId']);
      } else if (code == "1") {
        // 中途点击返回
      } else {
        // 失败
      }
    }, (event) {
      print(event);
    });
    YundianOcr.onOcrResultListener((event) {
      print(event);
    }, (event) {
      print(event);
    });
  }

  Future<void> initSdk() async {
    YundianAlive.setSecurityLevel(0);
    var result =
        await YundianAlive.aliveInit(false, "EgRIOtmR", "mchInfo", "riskInfo");
    print(result);
    var resultOcr =
        await YundianOcr.ocrInit(true, "EgRIOtmR", "mchInfo", "riskInfo");
    print(resultOcr);
  }

  Future<void> getToken() async {
    String url = "http://110.40.189.145:3001/sdk/real-auth/getToken";

    ///创建Dio
    Dio dio = Dio();
    int random = Random().nextInt(100);

    ///创建Map 封装参数
    Map<String, dynamic> params = {};
    var userId = "userId${random.toString()}";
    final key = encrypt.Key.fromUtf8('NxbIe4PRzoNhsszN');
    final iv = encrypt.IV.fromLength(16); //偏移量
    //设置cbc模式
    final encrypter = encrypt.Encrypter(
        encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: 'PKCS7'));
    final encrypted = encrypter.encrypt(userId, iv: iv);

    // params['userId'] = await YundianAlive.aliveEncryptAes({"info": userId, "appSecret": "NxbIe4PRzoNhsszN"});
    params['userId'] = encrypted.base64;
    String jsonString = json.encode(params);

    Map<String, String> headerMap = {};
    headerMap["X-Ca-Key"] = "";

    ///发起post请求
    Response response = await dio.post(url, data: jsonString);

    var data = response.data;
    _token = data["data"]["token"];

    print(data);
    print(_token);
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    String platformVersion;
    // Platform messages may fail, so we use a try/catch PlatformException.
    // We also handle the message potentially returning null.
    try {
      platformVersion =
          await YundianAlive.getPlatformVersion() ?? 'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Text('Running on: $_platformVersion\n'),
              GestureDetector(
                  onTap: () async {
                    setState(() {
                      aliveResult = "";
                    });

                    var result = await YundianAlive.aliveStartDetect(
                        _token, 3.0, true, false);
                    print(result);
                  },
                  child: Container(
                    padding: const EdgeInsets.all(12.0),
                    decoration: BoxDecoration(
                      color: Colors.lightBlue,
                      borderRadius: BorderRadius.circular(8.0),
                    ),
                    child: const Text('活体检测'),
                  )),
              Padding(
                padding: const EdgeInsets.only(top: 20),
                child: Text(aliveResult),
              ),
              GestureDetector(
                  onTap: () async {
                    var result = await YundianOcr.ocrStartDetect(_token, true);
                    print(result);
                  },
                  child: Container(
                    padding: const EdgeInsets.all(12.0),
                    decoration: BoxDecoration(
                      color: Colors.lightBlue,
                      borderRadius: BorderRadius.circular(8.0),
                    ),
                    child: const Text('OCR检测'),
                  )),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
0
points
16
downloads

Publisher

unverified uploader

Weekly Downloads

yundian alive Flutter project.

Homepage

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on yundian_alive

Packages that implement yundian_alive