36 lines
1.2 KiB
Dart
36 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'app.dart';
|
|
import 'core/firebase/firebase_boot.dart';
|
|
import 'features/auth/auth_repository.dart';
|
|
import 'features/auth/firebase_auth_session.dart';
|
|
import 'features/auth/onboarding_data.dart';
|
|
|
|
/// 소개 3장(온보딩 ①)을 이 기기에서 넘겼는가.
|
|
const _introSeenKey = 'onboarding.introSeen';
|
|
|
|
Future<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
// 설정 파일이 없으면 목 모드로 내려간다. 여기서 throw 하지 않는다 — FirebaseBoot 참고.
|
|
await FirebaseBoot.init();
|
|
final live = FirebaseBoot.isLive;
|
|
final session = live ? FirebaseAuthSession() : null;
|
|
var introSeen = true;
|
|
try {
|
|
introSeen =
|
|
(await SharedPreferences.getInstance()).getBool(_introSeenKey) ?? false;
|
|
} catch (_) {}
|
|
runApp(
|
|
FancakeApp(
|
|
auth: AuthRepository(
|
|
session: session,
|
|
needsOnboarding: live ? needsOnboardingFirestore : null,
|
|
introPending: !introSeen,
|
|
onIntroDone: () async => (await SharedPreferences.getInstance())
|
|
.setBool(_introSeenKey, true),
|
|
),
|
|
),
|
|
);
|
|
}
|