Files
friflex_flutter_starter/lib/features/debug/screens/icons_screen.dart

59 lines
2.1 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import 'package:friflex_starter/app/ui_kit/app_box.dart';
import 'package:friflex_starter/gen/assets.gen.dart';
/// {@template icons_screen}
/// Экран для отображения всех доступных иконок приложения.
///
/// Отвечает за:
/// - Отображение списка всех SVG иконок из assets/icons/
/// - Предоставление возможности просмотра иконок для разработчиков
/// - Демонстрацию использования системы генерации ресурсов
/// {@endtemplate}
class IconsScreen extends StatelessWidget {
/// {@macro icons_screen}
const IconsScreen({super.key});
@override
Widget build(BuildContext context) {
final iconList = Assets.icons.values
.map((icon) => _ItemIcon(icon: icon.svg(), name: icon.path))
.toList();
return Scaffold(
appBar: AppBar(title: const Text('Иконки')),
body: Center(
child: ListView.separated(
padding: const EdgeInsets.all(16),
itemBuilder: (context, index) {
return iconList[index];
},
separatorBuilder: (context, index) => const Divider(),
itemCount: iconList.length,
),
),
);
}
}
/// {@template item_icon}
/// Виджет для отображения отдельной иконки в списке.
///
/// Отображает SVG иконку вместе с её названием файла
/// для удобства идентификации в процессе разработки.
/// {@endtemplate}
class _ItemIcon extends StatelessWidget {
/// {@macro item_icon}
const _ItemIcon({required this.icon, required this.name});
/// SVG иконка для отображения
final Widget icon;
/// Название файла иконки для идентификации
final String name;
@override
Widget build(BuildContext context) {
return Row(children: [icon, const WBox(16), Text(name)]);
}
}