feat(snackbar): Добавить поддержку информационного снекбара и обновить документацию. Обновлены файлы .gitignore и README.md, добавлены новые цвета и методы для отображения снекбара с информацией.

This commit is contained in:
PetrovY
2025-06-07 19:03:13 +03:00
parent 26a5fdef92
commit 93b01f67ef
7 changed files with 269 additions and 52 deletions

View File

@@ -12,4 +12,7 @@ extension AppColorsScheme on ColorScheme {
/// Цвет заднего фона снекбара с успехом
Color get successSnackbarBackground => const Color(0xFF6FB62C);
/// Цвет заднего фона снекбара с информацией
Color get infoSnackbarBackground => const Color.fromARGB(255, 220, 108, 77);
}

View File

@@ -15,6 +15,9 @@ enum TypeSnackBar {
/// Снекбар с ошибкой
error,
/// Снекбар с информацией
info,
}
/// {@template app_snackbar}
@@ -66,6 +69,24 @@ class AppSnackBar extends StatefulWidget {
);
}
/// Показать снекбар с информацией
/// [context] - контекст, в котором будет показан снекбар
/// [message] - сообщение, которое будет отображаться в снекбаре
/// [displayDuration] - продолжительность отображения снекбара
/// По умолчанию 3 секунды
static void showInfo(
BuildContext context, {
required String message,
Duration displayDuration = const Duration(seconds: 3),
}) {
_show(
context: context,
message: message,
type: TypeSnackBar.info,
displayDuration: displayDuration,
);
}
/// Показать снекбар с успехом
/// [context] - контекст, в котором будет показан снекбар
/// [message] - сообщение, которое будет отображаться в снекбаре
@@ -246,6 +267,7 @@ class _AppSnackBarState extends State<AppSnackBar>
return switch (type) {
TypeSnackBar.success => context.colors.successSnackbarBackground,
TypeSnackBar.error => context.colors.errorSnackbarBackground,
TypeSnackBar.info => context.colors.infoSnackbarBackground,
};
}
}
@@ -273,6 +295,7 @@ class _Icon extends StatelessWidget {
size: 32,
),
TypeSnackBar.error => Icon(Icons.error, color: Colors.white, size: 32),
TypeSnackBar.info => Icon(Icons.info, color: Colors.white, size: 32),
};
}
}

View File

@@ -44,6 +44,13 @@ class _ComponentsScreenState extends State<ComponentsScreen> {
},
child: const Text('Показать снекбар с успехом'),
),
const HBox(16),
ElevatedButton(
onPressed: () {
AppSnackBar.showInfo(context, message: 'Это просто сообщение');
},
child: const Text('Показать снекбар с информацией'),
),
],
),
),