super_simple_authentication_flutter 0.0.1-dev.2 copy "super_simple_authentication_flutter: ^0.0.1-dev.2" to clipboard
super_simple_authentication_flutter: ^0.0.1-dev.2 copied to clipboard

A Flutter client for Super Simple Authentication.

example/main.dart

import 'dart:async';

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

final auth = SuperSimpleAuthentication(
  host: 'localhost',
  port: 8080,
  secureScheme: false,
);

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // Initialize to load stored tokens
  await auth.initialize();
  runApp(const MainApp());
}

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

  @override
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  final emailController = TextEditingController();
  final passwordController = TextEditingController();
  late final StreamSubscription<TokenData?> _accessTokenSubscription;
  bool _isSignedIn = false;
  bool _createUser = false;

  @override
  void initState() {
    super.initState();
    _isSignedIn = auth.isSignedIn;
    _accessTokenSubscription = auth.tokenDataStream.listen((token) {
      setState(() {
        _isSignedIn = auth.isSignedIn;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(16),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                _isSignedIn
                    ? 'Signed In as ${auth.tokenData?.userId}'
                    : 'Signed Out',
              ),
              Row(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Switch.adaptive(
                    value: _createUser,
                    onChanged: (value) {
                      setState(() {
                        _createUser = value;
                      });
                    },
                  ),
                  const Text('Create User'),
                ],
              ),
              TextField(
                controller: emailController,
                decoration: const InputDecoration(labelText: 'Email'),
              ),
              TextField(
                controller: passwordController,
                decoration: const InputDecoration(labelText: 'Password'),
              ),
              Row(
                mainAxisSize: MainAxisSize.min,
                children: [
                  ElevatedButton(
                    onPressed: () {
                      if (_createUser) {
                        auth.createAccountWithEmailAndPassword(
                          email: emailController.text,
                          password: passwordController.text,
                        );
                      } else {
                        auth.signInWithEmailAndPassword(
                          email: emailController.text,
                          password: passwordController.text,
                        );
                      }
                    },
                    child: const Text('Sign In'),
                  ),
                  ElevatedButton(
                    onPressed: auth.signOut,
                    child: const Text('Sign Out'),
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    emailController.dispose();
    passwordController.dispose();
    _accessTokenSubscription.cancel();
    super.dispose();
  }
}
1
likes
150
points
349
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter client for Super Simple Authentication.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

equatable, flutter, flutter_secure_storage, http

More

Packages that depend on super_simple_authentication_flutter