2025-06-02 17:29:26 +09:00

88 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
void main() {
runApp(const SukjenogiApp());
}
class SukjenogiApp extends StatelessWidget {
const SukjenogiApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '숙제노기',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
useMaterial3: true,
),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
final tiles = [
_HomeTile(icon: Icons.login, label: '로그인', onTap: () {}),
_HomeTile(icon: Icons.person, label: '캐릭터', onTap: () {}),
_HomeTile(icon: Icons.dashboard, label: '대시보드', onTap: () {}),
_HomeTile(icon: Icons.assignment, label: '숙제관리', onTap: () {}),
_HomeTile(icon: Icons.group, label: '친구', onTap: () {}),
_HomeTile(icon: Icons.settings, label: '설정', onTap: () {}),
];
return Scaffold(
appBar: AppBar(
title: const Text('숙제노기 홈'),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.all(16),
child: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
children: tiles,
),
),
);
}
}
class _HomeTile extends StatelessWidget {
final IconData icon;
final String label;
final VoidCallback onTap;
const _HomeTile({
required this.icon,
required this.label,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
decoration: BoxDecoration(
color: Colors.indigo.shade50,
borderRadius: BorderRadius.circular(16),
),
padding: const EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, size: 48, color: Colors.indigo),
const SizedBox(height: 12),
Text(label, style: const TextStyle(fontSize: 16)),
],
),
),
);
}
}