nsg_login 1.0.0-beta.1

SDKflutter

Визуальные компоненты для авторизации и регистрации пользователей в приложениях NSG. Поддерживает вход по телефону, email и паролю с SMS-верификацией.

nsg_login

Визуальные компоненты для авторизации и регистрации пользователей в приложениях NSG. Пакет предоставляет готовые UI компоненты для входа по телефону, email и паролю с поддержкой SMS-верификации.

Возможности

  • 🔐 Множественные способы авторизации: телефон, email, пароль
  • 📱 SMS-верификация: автоматическая отправка и проверка кодов
  • 🎨 Настраиваемый дизайн: полная кастомизация цветов, размеров и текстов
  • 🔒 Валидация паролей: встроенная проверка сложности паролей
  • 💾 Запоминание пользователя: автоматическое сохранение токенов
  • 🌐 Поддержка капчи: защита от ботов
  • 📱 Адаптивный дизайн: поддержка различных размеров экранов

Установка

Добавьте зависимость в ваш pubspec.yaml:

dependencies:
  nsg_login: ^1.0.0-beta.1

Быстрый старт

1. Импорт пакета

import 'package:nsg_login/nsg_login.dart';

2. Базовая настройка

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: NsgLoginPage(
        provider, // Ваш NsgDataProvider
        widgetParams: () => NsgLoginParams(
          headerMessage: 'Моё приложение',
          usePhoneLogin: true,
          useEmailLogin: true,
          usePasswordLogin: true,
        ),
      ),
    );
  }
}

Использование

Основная страница входа

NsgLoginPage(
  provider,
  widgetParams: () => NsgLoginParams(
    // Основные настройки
    headerMessage: 'Добро пожаловать',
    usePhoneLogin: true,
    useEmailLogin: true,
    usePasswordLogin: true,
    
    // Кастомизация текстов
    textEnter: 'Войти',
    textRegistration: 'Регистрация',
    textRememberUser: 'Запомнить меня',
    
    // Цветовая схема
    cardColor: Colors.white,
    textColor: Colors.black,
    fillColor: Colors.blue,
    
    // Callback функции
    loginSuccessful: (context, parameter) {
      // Действие при успешном входе
      Navigator.pushReplacementNamed(context, '/home');
    },
    eventLoginWidgweClosed: (isLoginSuccessful) {
      // Действие при закрытии окна входа
      print('Login widget closed. Success: $isLoginSuccessful');
    },
  ),
)

Настройка валидации паролей

NsgLoginParams(
  passwordValidator: (password) {
    if (password == null || password.length < 8) {
      return 'Пароль должен содержать минимум 8 символов';
    }
    if (!password.contains(RegExp(r'[A-Z]'))) {
      return 'Пароль должен содержать заглавную букву';
    }
    return null; // Пароль валиден
  },
  passwordIndicator: (password) {
    // Возвращает PasswordStrength из nsg_data
    if (password.length < 6) return PasswordStrength.weak;
    if (password.length < 10) return PasswordStrength.medium;
    return PasswordStrength.strong;
  },
)

Настройка обработки ошибок

NsgLoginParams(
  errorMessageByStatusCode: (statusCode) {
    switch (statusCode) {
      case 40101:
        return 'Необходимо получить капчу';
      case 40300:
        return 'Неверный код подтверждения';
      case 40304:
        return 'Неверный логин или пароль';
      default:
        return 'Произошла ошибка: $statusCode';
    }
  },
)

Параметры конфигурации

Основные параметры

ПараметрТипОписание
headerMessageStringЗаголовок страницы входа
usePhoneLoginboolРазрешить вход по телефону
useEmailLoginboolРазрешить вход по email
usePasswordLoginboolРазрешить вход по паролю
useCaptchaboolИспользовать капчу

Параметры дизайна

ПараметрТипОписание
cardSizedoubleРазмер карточки (по умолчанию: 345.0)
iconSizedoubleРазмер иконок (по умолчанию: 28.0)
buttonSizedoubleРазмер кнопок (по умолчанию: 42.0)
cardColorColorЦвет карточки
textColorColorЦвет текста
fillColorColorЦвет заполнения

Callback функции

ПараметрТипОписание
loginSuccessfulFunctionВызывается при успешном входе
loginFailedFunctionВызывается при неудачном входе
eventLoginWidgweClosedFunctionВызывается при закрытии окна входа
onCloseVoidCallbackВызывается при закрытии окна

Зависимости

Пакет использует следующие зависимости:

  • nsg_data: ^1.0.0 - Основная библиотека данных NSG
  • nsg_controls: ^1.0.0-beta.1 - UI компоненты NSG
  • get: ^5.0.0-beta.52 - State management
  • hovering: ^1.0.4 - Эффекты наведения
  • flutter_multi_formatter: ^2.13.7 - Форматирование полей ввода
  • shared_preferences: ^2.0.6 - Локальное хранение данных

Примеры

Полные примеры использования доступны в папке /example (если создана).

Простой пример входа по телефону

NsgLoginPage(
  provider,
  widgetParams: () => NsgLoginParams(
    headerMessage: 'Вход в систему',
    usePhoneLogin: true,
    useEmailLogin: false,
    usePasswordLogin: false,
    textEnterPhone: 'Введите номер телефона',
    textSendSms: 'Отправить код',
    loginSuccessful: (context, parameter) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Успешный вход!')),
      );
    },
  ),
)

Поддержка

Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.

Версии

Текущая версия: 1.0.0-beta.1

Для информации об изменениях между версиями см. CHANGELOG.md.