better_auth_flutter 0.0.3 copy "better_auth_flutter: ^0.0.3" to clipboard
better_auth_flutter: ^0.0.3 copied to clipboard

A Flutter client package for integrating with Better Auth - a secure authentication platform.

example/lib/main.dart

import 'dart:developer';
import 'package:better_auth_flutter/better_auth_flutter.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  BetterAuth.init(baseUrl: Uri(scheme: "http", host: "localhost", port: 8000));
  runApp(const App());
}

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Better Auth Flutter",
      home: Home(),
      theme: ThemeData.dark(useMaterial3: true),
    );
  }
}

class Home extends StatelessWidget {
  const Home({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          spacing: 16,
          children: [
            ElevatedButton(onPressed: Repo.signUp, child: Text("Sign Up")),
            ElevatedButton(onPressed: Repo.signIn, child: Text("Sign In")),
            ElevatedButton(onPressed: Repo.signOut, child: Text("Sign Out")),
            ElevatedButton(
              onPressed: Repo.signInWithGoogle,
              child: Text("Google Sign In"),
            ),
            ElevatedButton(
              onPressed: Repo.getSession,
              child: Text("Get Session"),
            ),

            ElevatedButton(
              onPressed: Repo.listAccounts,
              child: Text("List Accounts"),
            ),
          ],
        ),
      ),
    );
  }
}

class Repo {
  static final betterAuth = BetterAuth.instance.client;

  static final GoogleSignIn googleSignIn = GoogleSignIn(serverClientId: "");

  static void signUp() async {
    final (result, error) = await BetterAuth.instance.client
        .signUpWithEmailAndPassword(
          email: "test@test.com",
          password: "password",
          name: "test",
        );

    if (error != null) {
      log(error.message.toString());
      return;
    }

    log(result.toString());
  }

  static void signIn() async {
    final (result, error) = await BetterAuth.instance.client
        .signInWithEmailAndPassword(
          email: "test@test.com",
          password: "password",
        );

    if (error != null) {
      log(error.message.toString());
      return;
    }

    log(result.toString());
  }

  static void signOut() async {
    final error = await BetterAuth.instance.client.signOut();

    if (error != null) {
      log(error.message.toString());
      return;
    }

    await googleSignIn.signOut();

    log("Signed out");
  }

  static void signInWithGoogle() async {
    final GoogleSignInAccount? googleSignInAccount =
        await googleSignIn.signIn();

    if (googleSignInAccount == null) {
      log("Google sign in cancelled");
      return;
    }

    final GoogleSignInAuthentication googleSignInAuthentication =
        await googleSignInAccount.authentication;

    final accessToken = googleSignInAuthentication.accessToken;
    final idToken = googleSignInAuthentication.idToken;

    if (accessToken == null) {
      log("Google access token is null");
      return;
    }

    if (idToken == null) {
      log("Google id token is null");
      return;
    }

    final (res, err) = await BetterAuth.instance.client.signInWithIdToken(
      provider: SocialProvider.google,
      idToken: idToken,
      accessToken: accessToken,
    );

    if (err != null) {
      log(err.message.toString());
      return;
    }

    log(res.toString());
  }

  static void getSession() async {
    final (session, error) = await BetterAuth.instance.client.getSession();
    if (error != null) {
      log(error.message.toString());
      return;
    }

    log(session.toString());
  }

  static void listAccounts() async {
    await betterAuth.listAccounts();
  }
}
5
likes
0
points
92
downloads

Publisher

verified publisherstormej.me

Weekly Downloads

A Flutter client package for integrating with Better Auth - a secure authentication platform.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

auto_exporter_annotation, cookie_jar, flutter, google_sign_in, http, path_provider, shared_preferences

More

Packages that depend on better_auth_flutter