NSG Controls

pub package License: MIT

Набор 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 для деталей.

🤝 Поддержка

Если у вас есть вопросы или предложения:

📈 Версии

См. CHANGELOG.md для истории изменений.


Автор: NSG (zenkov25@gmail.com)

Libraries

dialog/nsg_future_progress_exception
dialog/show_nsg_dialog
dialog/show_nsg_simple_dialog
dropdown/nsg_dropdown_menu
dropdown/nsg_dropdown_menu_item
dropdown/nsg_dropdown_menu_overlay
file_picker/nsg_crop_page
file_picker/nsg_file_picker
file_picker/nsg_file_picker_controller
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_button
nsg_control_options
nsg_controls
nsg_data_controller_ui
nsg_divider
nsg_focus_control
nsg_grid
nsg_icon_button
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_style_button
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_menu_button
table/nsg_table_menu_button_type
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_context_menu
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