yundian_alive 0.0.1
yundian_alive: ^0.0.1 copied to clipboard
yundian alive Flutter project.
example/lib/main.dart
import 'dart:convert';
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';
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';
final _yundianAlivePlugin = YundianAlive();
@override
void initState() {
super.initState();
initSdk();
getToken();
initListener();
initPlatformState();
}
void initListener() {
_yundianAlivePlugin.onAliveResultListener(
_onAliveResultListener, _onAliveResultErrorListener);
}
void _onAliveResultListener(dynamic event) {
print(event);
}
void _onAliveResultErrorListener(dynamic error) {
print(error);
}
Future<void> initSdk() async {
Map<String, dynamic> params = {};
params["isDebug"] = false;
params["appKey"] = "EgRIOtmR";
params["mchInfo"] = "mchInfo";
params["riskInfo"] = "riskInfo";
var result = await _yundianAlivePlugin.aliveInit(params);
print(result);
}
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()}";
params['userId'] = await _yundianAlivePlugin
.aliveEncryptAes({"info": userId, "appSecret": "NxbIe4PRzoNhsszN"});
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 _yundianAlivePlugin.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 {
Map<String, dynamic> params = {};
params["hasResultPage"] = false;
params["authToken"] = _token;
var result = await _yundianAlivePlugin.aliveStartDetect(params);
print(result);
},
child: Container(
padding: const EdgeInsets.all(12.0),
decoration: BoxDecoration(
color: Colors.lightBlue,
borderRadius: BorderRadius.circular(8.0),
),
child: const Text('活体检测'),
)),
],
),
),
),
);
}
}