cloudflare_turnstile 0.0.1 copy "cloudflare_turnstile: ^0.0.1" to clipboard
cloudflare_turnstile: ^0.0.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 {
                        bool isExpired = await _controller.isExpired();
                        ScaffoldMessenger.of(context).showSnackBar(
                          SnackBar(content: Text('Token is ${isExpired ? "Expired" : "Valid"}')),
                        );
                      },
                      child: const Text('Validate'),
                    ),
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
39
likes
0
points
17k
downloads

Publisher

unverified uploader

Weekly Downloads

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