gt3_captcha 0.0.5 copy "gt3_captcha: ^0.0.5" to clipboard
gt3_captcha: ^0.0.5 copied to clipboard

A flutter plugin project for https://docs.geetest.com/sensebot/start/.

example/lib/main.dart

import 'dart:convert';
import 'dart:io';

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

import 'package:gt3_captcha/gt3_captcha.dart';

late final Dio _dio = Dio()
  ..options.connectTimeout = 15000
  ..options.sendTimeout = 15000
  ..options.receiveTimeout = 15000;

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final Completer<Gt3CaptchaViewController> _controller =
      Completer<Gt3CaptchaViewController>();

  bool isShowCaptch = false;
  String? va;
  @override
  void initState() {
    super.initState();
    if (Platform.isAndroid)
      Gt3CaptchaView.platform = SurfaceAndroidGt3CaptchaView();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Stack(
        children: [
          Scaffold(
            appBar: AppBar(
              title: const Text('Plugin example app'),
            ),
            body: Column(
              children: [
                Text(va ?? ""),
                TextButton(
                    onPressed: () {
                      setState(() {
                        isShowCaptch = true;
                      });
                    },
                    child: Text("click to get Code"))
              ],
            ),
          ),
          Visibility(
            visible: isShowCaptch,
            child: Gt3CaptchaView(
              onRegister: () async {
                return await _onRegister();
              },
              onValidation: (params) async {
                String? result = await _onValidation(params);
                setState(() {
                  va = result;
                  isShowCaptch = false;
                });
                return (result != null) ? true : false;
              },
              onGt3CaptchaViewCreated: (controller) {
                controller.start();
              },
              onGtViewShow: () async {
                print('onGtViewShow');
              },
              onCancel: () async {
                print('onCancel');
                setState(() {
                  isShowCaptch = false;
                });
              },
              onError: () async {
                print('onError');
                setState(() {
                  isShowCaptch = false;
                });
              },
            ),
          ),
        ],
      ),
    );
  }

  Future<String?> _onRegister() async {
    final url = "https://********/register";
    var res = await _dio.post(url);
    var data = res.data;
    print(data);
    if (data != null) {
      int? code = data['code'] as int?;
      var result = data['data'];
      if (code == 0 && result != null) {
        return JsonEncoder().convert(result);
      }
    }
    return null;
  }

  Future<String?> _onValidation(String params) async {
    final url = "https://********/validate";
    var mParams = JsonDecoder().convert(params);
    var res = await _dio.post(url, data: mParams);
    var data = res.data;
    print(data);
    if (data != null) {
      int? code = data['code'] as int?;
      Map? result = data['data'] as Map<String, dynamic>?;
      if (code == 0 && result != null) {
        String key = result["validate"] as String? ?? "";
        String captcha = result["challenge"] as String? ?? "";
        if (key.isNotEmpty && captcha.isNotEmpty) {
          return "key:$key captcha:$captcha";
        }
      }
    }
    return null;
  }
}
5
likes
110
pub points
66%
popularity

Publisher

unverified uploader

A flutter plugin project for https://docs.geetest.com/sensebot/start/.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on gt3_captcha