68 lines
1.8 KiB
Dart
68 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
Future<void> main() async {
|
|
// dotenv 로드 — .env 파일이 없으면 기본값으로 동작
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
try {
|
|
await dotenv.load(fileName: '.env');
|
|
} catch (_) {
|
|
// .env 파일이 없는 경우 무시 (기본값 사용)
|
|
}
|
|
|
|
runApp(
|
|
// Riverpod Provider Scope 적용
|
|
const ProviderScope(
|
|
child: MyApp(),
|
|
),
|
|
);
|
|
}
|
|
|
|
class MyApp extends StatelessWidget {
|
|
const MyApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(
|
|
title: 'TMA App',
|
|
theme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
|
|
useMaterial3: true,
|
|
),
|
|
home: const HomeView(),
|
|
);
|
|
}
|
|
}
|
|
|
|
class HomeView extends StatelessWidget {
|
|
const HomeView({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('TMA Global Architecture'),
|
|
),
|
|
body: Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
const Text('Riverpod & Dio Interceptor Setup Complete.'),
|
|
const SizedBox(height: 16),
|
|
ElevatedButton(
|
|
onPressed: () {
|
|
// 테스트 용 임시 스낵바 알림 호출 (User-Friendly Error UI)
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
const SnackBar(content: Text('에러 발생 시 보여질 Toast 예시입니다.')),
|
|
);
|
|
},
|
|
child: const Text('Show Global Alert Test'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|