nsg_login 1.0.0-beta.1
nsg_login: ^1.0.0-beta.1 copied to clipboard
Визуальные компоненты для авторизации и регистрации пользователей в приложениях 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';
}
},
)
Параметры конфигурации #
Основные параметры #
Параметр | Тип | Описание |
---|---|---|
headerMessage |
String | Заголовок страницы входа |
usePhoneLogin |
bool | Разрешить вход по телефону |
useEmailLogin |
bool | Разрешить вход по email |
usePasswordLogin |
bool | Разрешить вход по паролю |
useCaptcha |
bool | Использовать капчу |
Параметры дизайна #
Параметр | Тип | Описание |
---|---|---|
cardSize |
double | Размер карточки (по умолчанию: 345.0) |
iconSize |
double | Размер иконок (по умолчанию: 28.0) |
buttonSize |
double | Размер кнопок (по умолчанию: 42.0) |
cardColor |
Color | Цвет карточки |
textColor |
Color | Цвет текста |
fillColor |
Color | Цвет заполнения |
Callback функции #
Параметр | Тип | Описание |
---|---|---|
loginSuccessful |
Function | Вызывается при успешном входе |
loginFailed |
Function | Вызывается при неудачном входе |
eventLoginWidgweClosed |
Function | Вызывается при закрытии окна входа |
onClose |
VoidCallback | Вызывается при закрытии окна |
Зависимости #
Пакет использует следующие зависимости:
nsg_data: ^1.0.0
- Основная библиотека данных NSGnsg_controls: ^1.0.0-beta.1
- UI компоненты NSGget: ^5.0.0-beta.52
- State managementhovering: ^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('Успешный вход!')),
);
},
),
)
Поддержка #
- GitHub: https://github.com/zenalex/nsg_login
- Issues: Создавайте issues на GitHub для сообщений об ошибках и предложений
Лицензия #
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
Версии #
Текущая версия: 1.0.0-beta.1
Для информации об изменениях между версиями см. CHANGELOG.md.