auth_api_rest_mobile 1.0.0 copy "auth_api_rest_mobile: ^1.0.0" to clipboard
auth_api_rest_mobile: ^1.0.0 copied to clipboard

Flutter authentication package providing OAuth2-based authentication with session management, OTP validation, password recovery, and user registration. Supports iOS and Android platforms.

example/example.dart

import 'package:auth_api_rest_mobile/auth_api_rest.dart';
import 'package:auth_api_rest_mobile/bloc/auth/auth_bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_models_provider/global/environment.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final authApiRest = AuthApiRest(
    clientId: "YOUR_CLIENT_ID_HERE",
    clientSecret: "YOUR_CLIENT_SECRET_HERE",
    redirectUri: RedirectUri.loginPost,
    gestorData: GestorData.objectBox,
    coleccionFuncionesBackend: '',
  );
  await authApiRest.init(
    endpointApi: 'YOUR_API_ENDPOINT_HERE',
    endpointAuth: 'YOUR_AUTH_ENDPOINT_HERE',
    endpointSocket: 'YOUR_SOCKET_ENDPOINT_HERE',
  );

  runApp(MyApp(authApiRest: authApiRest));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key, required this.authApiRest});
  final AuthApiRest authApiRest;

  @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
      providers: [
        ...authApiRest.lstBlocsAuth,
      ],
      child: MaterialApp(
        title: 'Auth API Rest Example',
        theme: ThemeData(primarySwatch: Colors.blue),
        home: const LoginPage(),
      ),
    );
  }
}

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

  @override
  State<LoginPage> createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
  final _emailController = TextEditingController();
  final _passwordController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Login')),
      body: BlocConsumer<AuthBloc, AuthState>(
        listener: (context, state) {
          if (state.error.isNotEmpty) {
            ScaffoldMessenger.of(context).showSnackBar(
              SnackBar(content: Text(state.error)),
            );
          }
        },
        builder: (context, state) {
          if (state.isLoggedIn) {
            return Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  const Text('Login successful!'),
                  const SizedBox(height: 16),
                  ElevatedButton(
                    onPressed: () {
                      context.read<AuthBloc>().add(const OnLogoutAuth());
                    },
                    child: const Text('Logout'),
                  ),
                ],
              ),
            );
          }

          return Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                TextField(
                  controller: _emailController,
                  decoration: const InputDecoration(labelText: 'Email'),
                  keyboardType: TextInputType.emailAddress,
                ),
                const SizedBox(height: 16),
                TextField(
                  controller: _passwordController,
                  decoration: const InputDecoration(labelText: 'Password'),
                  obscureText: true,
                ),
                const SizedBox(height: 24),
                ElevatedButton(
                  onPressed: state.isWorking
                      ? null
                      : () {
                          context.read<AuthBloc>().add(OnLoginAuthV4(
                                usuario: _emailController.text,
                                password: _passwordController.text,
                              ));
                        },
                  child: state.isWorking
                      ? const CircularProgressIndicator()
                      : const Text('Login'),
                ),
              ],
            ),
          );
        },
      ),
    );
  }
}
0
likes
0
points
411
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter authentication package providing OAuth2-based authentication with session management, OTP validation, password recovery, and user registration. Supports iOS and Android platforms.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

api_rest_flutter, bloc, crypto, equatable, flutter, flutter_bloc, flutter_data_cloud_provider, flutter_data_mobile_provider, flutter_data_shp_provider, flutter_http_provider, flutter_models_provider, flutter_objectbox_provider, flutter_socket_provider, flutter_utils_providers, socket_io_client, webview_flutter

More

Packages that depend on auth_api_rest_mobile