cloudflare_turnstile 0.0.1+1 copy "cloudflare_turnstile: ^0.0.1+1" to clipboard
cloudflare_turnstile: ^0.0.1+1 copied to clipboard

The Cloudflare Turnstile Widget is an unofficial Flutter package designed to seamlessly integrate Cloudflare's Turnstile functionality into your Flutter applications.

example/lib/main.dart

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

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

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

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

class _MyAppState extends State<MyApp> {
  final TurnstileController _controller = TurnstileController();
  final TurnstileOptions _options = const TurnstileOptions(
    mode: TurnstileMode.managed,
    size: TurnstileSize.normal,
    theme: TurnstileTheme.light,
    retryAutomatically: false,
    refreshTimeout: TurnstileRefreshTimeout.manual,
  );

  String? _token;

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        body: Center(
          child: SingleChildScrollView(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                ConstrainedBox(
                  constraints: const BoxConstraints(maxWidth: 700),
                  child: _token != null ? Text(_token!) : const CircularProgressIndicator(),
                ),
                const SizedBox(height: 48.0),
                CloudFlareTurnstile(
                  siteKey: '0x4AAAAAAAXtCJcLXiSpwwcT',
                  options: _options,
                  controller: _controller,
                  onTokenRecived: (token) {
                    setState(() {
                      _token = token;
                    });
                  },
                  onTokenExpired: () {},
                  onError: (error) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text(error)),
                    );
                  },
                ),
                const SizedBox(height: 48.0),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    ElevatedButton(
                      onPressed: () async {
                        setState(() {
                          _token = null;
                        });

                        await _controller.refreshToken();
                      },
                      child: const Text('Refresh Token'),
                    ),
                    const SizedBox(width: 16.0),
                    ElevatedButton(
                      onPressed: () async {
                        await _controller.isExpired().then(
                          (isExpired) {
                            ScaffoldMessenger.of(context).showSnackBar(
                              SnackBar(content: Text('Token is ${isExpired ? "Expired" : "Valid"}')),
                            );
                          },
                        );
                      },
                      child: const Text('Validate'),
                    ),
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
6
likes
0
pub points
75%
popularity

Publisher

unverified uploader

The Cloudflare Turnstile Widget is an unofficial Flutter package designed to seamlessly integrate Cloudflare's Turnstile functionality into your Flutter applications.

Repository (GitHub)
View/report issues

Topics

#hcaptcha #recaptcha #cloudflare-turnstile

License

unknown (LICENSE)

Dependencies

flutter, flutter_inappwebview_android, flutter_inappwebview_ios, flutter_inappwebview_platform_interface

More

Packages that depend on cloudflare_turnstile