NSG Controls
Набор UI компонентов для быстрого создания приложений на основе пакета nsg_data. Пакет предоставляет готовые виджеты для работы с данными, формами, таблицами и другими элементами интерфейса.
🚀 Возможности
- Формы и поля ввода: Готовые компоненты для создания форм с валидацией
- Таблицы: Продвинутые таблицы с сортировкой, фильтрацией и редактированием
- Диалоги: Модальные окна, прогресс-диалоги и всплывающие меню
- Навигация: Табы, списки страниц и навигационные элементы
- Файловый пикер: Загрузка и обработка файлов с предварительным просмотром
- Локализация: Поддержка русского и английского языков
- Адаптивность: Responsive дизайн для различных размеров экранов
📦 Установка
Добавьте зависимость в ваш pubspec.yaml
:
dependencies:
nsg_controls: ^1.0.0-beta.1
nsg_data: ^1.0.0
Затем выполните:
flutter pub get
🎯 Основные компоненты
Формы и поля ввода
import 'package:nsg_controls/nsg_controls.dart';
// Текстовое поле
NsgInput(
label: 'Имя',
controller: nameController,
validator: (value) => value?.isEmpty == true ? 'Обязательное поле' : null,
)
// Выбор даты
NsgDatePicker(
label: 'Дата рождения',
controller: dateController,
)
// Выбор времени
NsgTimePicker(
label: 'Время',
controller: timeController,
)
// Выпадающий список
NsgDropdownMenu(
label: 'Город',
items: cities,
onChanged: (value) => print('Выбран: $value'),
)
Таблицы
// Простая таблица
NsgSimpleTable(
columns: [
NsgTableColumn(title: 'Имя', field: 'name'),
NsgTableColumn(title: 'Возраст', field: 'age'),
NsgTableColumn(title: 'Город', field: 'city'),
],
data: users,
onRowTap: (user) => print('Выбран: ${user.name}'),
)
// Таблица с редактированием
NsgTable(
columns: columns,
data: data,
editMode: true,
onSave: (item) => saveUser(item),
)
Диалоги
// Простой диалог
showNsgDialog(
context: context,
title: 'Подтверждение',
content: 'Вы уверены?',
actions: [
NsgButton(
text: 'Отмена',
onPressed: () => Navigator.pop(context),
),
NsgButton(
text: 'ОК',
onPressed: () => confirmAction(),
),
],
)
// Прогресс диалог
showNsgProgressDialog(
context: context,
message: 'Загрузка данных...',
)
Списки и навигация
// Список страниц
NsgListPage(
title: 'Пользователи',
dataController: usersController,
itemBuilder: (context, user) => UserCard(user: user),
)
// Табы
NsgSimpleTabs(
tabs: [
NsgSimpleTabsTab(title: 'Информация', child: InfoWidget()),
NsgSimpleTabsTab(title: 'Настройки', child: SettingsWidget()),
],
)
Файловый пикер
NsgFilePicker(
onFileSelected: (file) {
print('Выбран файл: ${file.name}');
},
allowedExtensions: ['jpg', 'png', 'pdf'],
maxFileSize: 10 * 1024 * 1024, // 10MB
)
🎨 Кастомизация
Темы и стили
// Настройка цветов
NsgControlOptions(
primaryColor: Colors.blue,
secondaryColor: Colors.grey,
errorColor: Colors.red,
)
// Кастомные стили для кнопок
NsgButton(
text: 'Кастомная кнопка',
style: NsgButtonStyle(
backgroundColor: Colors.green,
textColor: Colors.white,
borderRadius: 8,
),
)
Локализация
// Поддержка русского и английского языков
MaterialApp(
localizationsDelegates: [
NsgControlsLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('ru', 'RU'),
const Locale('en', 'US'),
],
)
📱 Примеры
Полные примеры использования доступны в папке example/controls_examples.
🔧 Требования
- Flutter: >=1.17.0
- Dart SDK: >=3.8.1
- nsg_data: ^1.0.0
📄 Лицензия
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
🤝 Поддержка
Если у вас есть вопросы или предложения:
- Email: zenalex@nsgsoft.com
- Telegram: @zenalex
- GitHub Issues: Создать issue
📈 Версии
См. CHANGELOG.md для истории изменений.
Автор: NSG (zenkov25@gmail.com)
Libraries
- dialog/nsg_future_progress_exception
- dialog/show_nsg_dialog
- dialog/show_nsg_simple_dialog
- file_picker/nsg_crop_page
- file_picker/nsg_file_picker
- file_picker/nsg_file_picker_controller
- file_picker/nsg_file_picker_gallery
- file_picker/nsg_file_picker_interface
- file_picker/nsg_file_picker_object
- file_picker/nsg_file_picker_provider
- file_picker/nsg_file_picker_table_controller
- file_picker/nsg_video_player
- formfields/nsg_checkbox
- formfields/nsg_date_picker
- formfields/nsg_field_type
- formfields/nsg_input
- formfields/nsg_input_mask_type
- formfields/nsg_input_selection_widget_type
- formfields/nsg_input_type
- formfields/nsg_period_filter
- formfields/nsg_position_boolBox
- formfields/nsg_search_textfield
- formfields/nsg_switch_horizontal
- formfields/nsg_text_filter
- formfields/nsg_time_picker
- helpers
- localization/nsg_controls_localizations
- localization/nsg_controls_localizations_en
- localization/nsg_controls_localizations_ru
- nsg_border
- nsg_control_options
- nsg_controls
- nsg_data_controller_ui
- nsg_divider
- nsg_focus_control
- nsg_grid
- nsg_icons
- nsg_listenable
- nsg_listpage
- nsg_login_params
- nsg_measurable
- nsg_multi_selection
- nsg_popup
- nsg_progress_dialog
- nsg_progress_dialog_helper
- nsg_row_to_column
- nsg_selection
- nsg_simple_table
- nsg_text
- nsg_text_input
- selection_nsg_popup
- simple_tabs/multi_tab/nsg_simple_tabs_tab_multi
- simple_tabs/multi_tab/nsg_simple_tabs_tab_multi_controller
- simple_tabs/nsg_simple_tabs
- simple_tabs/nsg_simple_tabs_all
- simple_tabs/nsg_simple_tabs_style
- simple_tabs/nsg_simple_tabs_tab_icon
- simple_tabs/simple_tab/nsg_simlpe_tabs_controller
- simple_tabs/simple_tab/nsg_simple_tabs_tab
- table/column_resizer
- table/nsg_table
- table/nsg_table_cell
- table/nsg_table_column
- table/nsg_table_column_sort
- table/nsg_table_column_total_type
- table/nsg_table_columns_reorder
- table/nsg_table_editmode
- table/nsg_table_row
- table/nsg_table_style
- tabs/nsg_tabs
- tabs/nsg_tabs_tab
- widgets/body_wrap
- widgets/debug_border
- widgets/nsg_appbar
- widgets/nsg_circle
- widgets/nsg_dialog
- widgets/nsg_dialog_save_or_cancel
- widgets/nsg_error_widget
- widgets/nsg_errorpage
- widgets/nsg_expansion_panel
- widgets/nsg_filter_chips_row
- widgets/nsg_glass
- widgets/nsg_image
- widgets/nsg_light_app_bar
- widgets/nsg_progressbar
- widgets/nsg_reorderable
- widgets/nsg_show_app_version
- widgets/nsg_simple_progress_bar
- widgets/nsg_simple_tabs
- widgets/nsg_slidable_item
- widgets/nsg_snackbar
- widgets/nsg_text_form_field
- widgets/nsg_trimleft
- widgets/search_widget