Skip to content

Commit

Permalink
add lottie (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
jwson-automation authored Aug 25, 2024
1 parent a1f7736 commit c3d40eb
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 59 deletions.
1 change: 1 addition & 0 deletions assets/lottie/splash.json

Large diffs are not rendered by default.

55 changes: 6 additions & 49 deletions lib/core/SplashScreen.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import 'package:blueberry_flutter_template/feature/onboarding/OnboardingScreen.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:blueberry_flutter_template/gen/assets.gen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:lottie/lottie.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'TopScreen.dart';

class SplashScreen extends ConsumerStatefulWidget {
class SplashScreen extends StatefulWidget {
static const String routeName = 'SplashScreen';

const SplashScreen({super.key});
Expand All @@ -16,7 +14,7 @@ class SplashScreen extends ConsumerStatefulWidget {
_SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends ConsumerState<SplashScreen> {
class _SplashScreenState extends State<SplashScreen> {
// 현재 로딩 단계와 총 단계를 관리하는 변수들
int _currentStep = 0;
final int _totalSteps = 3;
Expand All @@ -34,12 +32,6 @@ class _SplashScreenState extends ConsumerState<SplashScreen> {
final hasSeenOnboarding = prefs.getBool('hasSeenOnboarding') ?? false;

try {
// 단계별로 로딩 상태를 업데이트
// 단계별 로딩은 사용하지 않음.
// await _loadStep("Firebase 초기화", 1, _initializeFirebase);
// await _loadStep("유저 정보 가져오기", 2, _fetchUserInfo);
// await _loadStep("필수 데이터 로딩", 3, _loadEssentialData);

// 스플레쉬 스크린 확인을 위한 3초 지연
await Future.delayed(const Duration(seconds: 3));
// 초기화 완료 후 메인 화면으로 전환
Expand All @@ -65,30 +57,6 @@ class _SplashScreenState extends ConsumerState<SplashScreen> {
await stepFunction();
}

/// Firebase 초기화 작업 (예시)
Future<void> _initializeFirebase() async {
await Future.delayed(const Duration(seconds: 1)); // 실제 작업을 대체하는 지연
}

/// 유저 정보 가져오는 작업 (예시)
Future<void> _fetchUserInfo() async {
// Firebase Auth를 사용하여 현재 유저 정보 가져오기
User? user = FirebaseAuth.instance.currentUser;
await Future.delayed(const Duration(seconds: 1)); // 실제 작업을 대체하는 지연
if (user == null) {
// 예시: 유저 정보가 없는 경우 로그인 화면으로 이동 (여기서는 생략)
// Navigator.of(context).pushReplacement(
// MaterialPageRoute(builder: (context) => const LoginPage()),
// );
}
}

/// 필수 데이터 로딩 작업 (예시)
Future<void> _loadEssentialData() async {
// 필수 데이터 로딩 (여기서는 지연으로 대체)
await Future.delayed(const Duration(seconds: 1)); // 실제 작업을 대체하는 지연
}

@override
Widget build(BuildContext context) {
// 모바일인 경우 스플래쉬 스크린 표시
Expand All @@ -99,20 +67,9 @@ class _SplashScreenState extends ConsumerState<SplashScreen> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 앱 로고
Image.asset(
'assets/logo/logo_5.png', // 앱 로고 이미지 경로
height: 150,
Lottie.asset(
Assets.lottie.splash,
),
const SizedBox(height: 20),
// 로딩 애니메이션
const CircularProgressIndicator(),
// const SizedBox(height: 20),
// // 로딩 상태 문구
// Text(
// '$_currentStep/$_totalSteps 단계: '
// '${_currentStep == 1 ? 'Firebase 초기화 중...' : _currentStep == 2 ? '유저 정보 가져오는 중...' : '필수 데이터 로딩 중...'}',
// style: const TextStyle(fontSize: 16, color: Colors.black),
// ),
],
),
),
Expand Down
4 changes: 2 additions & 2 deletions lib/feature/onboarding/OnboardingData.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ class OnboardingData {
{
title: AppStrings.onboardingTitle,
description: AppStrings.onboardingDescription,
image: Assets.images.sample
image: Assets.images.safehouse
},
{
title: AppStrings.onboardingTitle2,
description: AppStrings.onboardingDescription2,
image: Assets.images.sample
image: Assets.images.phone
},
{
title: AppStrings.onboardingTitle3,
Expand Down
19 changes: 18 additions & 1 deletion lib/gen/assets.gen.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions lib/utils/AppStrings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,9 @@ class AppStrings {

// Onboarding Screen
static const String onboardingTitle = '환영합니다!';
static const String onboardingDescription = '우리 앱으로 최고의 경험을 해보세요.';
static const String onboardingTitle2 = '연결 유지';
static const String onboardingDescription2 = '사랑하는 사람들과 항상 연결되세요.';
static const String onboardingDescription = '혼자 자취하는 사람들을 위한 세이프 보이스 앱입니다.';
static const String onboardingTitle2 = '목소리 설정';
static const String onboardingDescription2 = '남자 목소리를 출력해서, 수상한 사람이 접근하는 상황에서 도움이 될 수 있어요.';
static const String onboardingTitle3 = '시작하기';
static const String onboardingDescription3 = '여정을 시작해봅시다!';
static const String onboardingScreenButtonStart = '시작하기';
Expand Down
6 changes: 2 additions & 4 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ dependencies:

# audio player
audioplayers: ^6.0.0
lottie: ^3.1.2



Expand All @@ -141,10 +142,7 @@ flutter:
- assets/icon/
- assets/login_page_images/
- assets/voice/
- assets/voice/voice_1.mp3
- assets/voice/voice_2.mp3
- assets/voice/voice_3.mp3
- assets/voice/voice_4.mp3
- assets/lottie/
- assets/launcher_icon/

# Run Commands to generate splash view
Expand Down

0 comments on commit c3d40eb

Please sign in to comment.