A package facilitating the basic ingredients for creating functional yet customizable login pages
Find a file
2024-05-23 15:42:13 +02:00
.github/workflows feat(documentation): Create component-documentation.yml workflow file 2024-02-13 13:39:50 +01:00
example fix: change forgotpassword form layout 2024-03-06 10:40:53 +01:00
lib feat: Add size and padding options for password suffix icon 2024-05-23 15:42:13 +02:00
.gitignore feat: export default validation 2023-06-12 13:40:05 +02:00
analysis_options.yaml fix: added Ci and linter 2024-02-07 10:02:41 +01:00
CHANGELOG.md feat: Add size and padding options for password suffix icon 2024-05-23 15:42:13 +02:00
CONTRIBUTING.md doc: create documentation for files 2024-02-28 10:26:59 +01:00
flutter_login.gif Updated README, added GIF, added Github Actions, fixed overflow bug when opening a keyboard on mobile devices. 2022-11-25 11:41:44 +01:00
LICENSE Add BSD-3-Clause license 2022-10-31 17:13:54 +01:00
pubspec.yaml feat: Add size and padding options for password suffix icon 2024-05-23 15:42:13 +02:00
README.md less default padding more decoration options 2023-03-14 11:33:27 +01:00

pub package Build status style: effective dart

Login Widget

A package facilitating the basic ingredients for creating functional yet customizable login pages

Login GIF

Setup

To use this package, add flutter_login as a dependency in your pubspec.yaml file.

How to use

final loginOptions = LoginOptions(
  emailDecoration: const InputDecoration(
    prefixIcon: Icon(Icons.email),
    border: OutlineInputBorder(),
  ),
  passwordDecoration: const InputDecoration(
    prefixIcon: Icon(Icons.password),
    border: OutlineInputBorder(),
  ),
  title: const Text('Login'),
  image: const FlutterLogo(),
  requestForgotPasswordButtonBuilder: (context, onPressed, isDisabled) {
    return Opacity(
      opacity: isDisabled ? 0.5 : 1.0,
      child: ElevatedButton(
        onPressed: onPressed,
        child: const Text('Send request'),
      ),
    );
  },
);

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark(),
      home: LoginScreen(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: EmailPasswordLoginForm(
        options: loginOptions,
        onLogin: (email, password) => print('$email:$password'),
        onRegister: (email, password) => print('Register!'),
        onForgotPassword: (email) {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) {
                return const ForgotPasswordScreen();
              },
            ),
          );
        },
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ForgotPasswordForm(
        options: loginOptions,
        title: Text('Forgot password'),
        description: Text('Hello world'),
        onRequestForgotPassword: (email) {
          print('Forgot password email sent to $email');
        },
      ),
    );
  }
}

See the Example Code for an example on how to use this package.

Issues

Please file any issues, bugs or feature request as an issue on our GitHub page. Commercial support is available if you need help with integration with your app or services. You can contact us at support@iconica.nl.

Want to contribute

If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please carefully review our contribution guide and send us your pull request.

Author

This flutter_login_widget for Flutter is developed by Iconica. You can contact us at support@iconica.nl