mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
refactor(app): Обновить описание и структуру файлов конфигурации, улучшить документацию (#14)
Co-authored-by: PetrovY <y.petrov@friflex.com>
This commit is contained in:
@@ -1,12 +1,20 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
/// Тип функции для построения виджета с учетом локализации
|
||||
typedef LocalizationBuilder = Widget Function();
|
||||
|
||||
/// Виджет для перестройки виджета в зависимости от локализации
|
||||
/// {@template localization_consumer}
|
||||
/// Виджет для подписки на изменения локализации приложения.
|
||||
///
|
||||
/// Автоматически перестраивает дочерние виджеты при изменении языка,
|
||||
/// обеспечивая реактивность интерфейса к изменениям настроек локализации.
|
||||
/// {@endtemplate}
|
||||
class LocalizationConsumer extends StatelessWidget {
|
||||
/// {@macro localization_consumer}
|
||||
const LocalizationConsumer({required this.builder, super.key});
|
||||
|
||||
/// Функция для построения виджета с учетом текущей локализации
|
||||
final LocalizationBuilder builder;
|
||||
|
||||
@override
|
||||
@@ -19,12 +27,34 @@ class LocalizationConsumer extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// Класс для управления локализацией
|
||||
/// {@template localization_notifier}
|
||||
/// Класс для управления локализацией приложения.
|
||||
///
|
||||
/// Отвечает за:
|
||||
/// - Хранение текущей локали приложения
|
||||
/// - Уведомление подписчиков об изменениях языка
|
||||
/// - Переключение между поддерживаемыми языками
|
||||
/// {@endtemplate}
|
||||
final class LocalizationNotifier extends ChangeNotifier {
|
||||
Locale _locale = const Locale('en', 'US');
|
||||
/// {@macro localization_notifier}
|
||||
LocalizationNotifier();
|
||||
|
||||
/// Текущая локаль приложения
|
||||
/// По умолчанию используется русский язык
|
||||
Locale _locale = const Locale('ru', 'RU');
|
||||
|
||||
/// Получение текущей локали
|
||||
Locale get locale => _locale;
|
||||
|
||||
/// Получение текущего языка в виде кода языка
|
||||
String get language => _locale.languageCode;
|
||||
|
||||
/// Метод для изменения локали приложения.
|
||||
///
|
||||
/// Принимает:
|
||||
/// - [locale] - новая локаль для установки
|
||||
///
|
||||
/// Уведомляет всех подписчиков об изменении локали.
|
||||
void changeLocal(Locale locale) {
|
||||
_locale = locale;
|
||||
notifyListeners();
|
||||
|
||||
Reference in New Issue
Block a user