본문 바로가기

Flutter/12 Clone 'Used Goods app'

[Flutter] Clone - 당근마켓17(firebase 환경설정 테스트)

이번 시간에는 firebase 환경 설정에 대한 테스트를 진행하겠습니다.

 

 

추가된 패키지는 아래와 같습니다.

 

firebase_core: ^1.20.0

 

 

main.dart 

 

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:firebase_core/firebase_core.dart';

import 'src/apple_app.dart';
import 'src/screens/splash/splash_screen.dart';
import 'src/utils/logger.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  // start_screen 에서 provider 를 사용하는데, 값을 변경하는게 아니고 사용만
  // 컨트롤러 자체만 사용 하는 경우는 아래 처럼 확실하게 컴파일러에게 알려줘야 한다
  Provider.debugCheckInvalidValueType = null;
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // final Future<FirebaseApp> _initialization = Firebase.initializeApp();

  @override
  Widget build(BuildContext context) {
    // return const SplashScreen();
    return FutureBuilder<Object>(
        future: Future.delayed(const Duration(seconds: 2), () => 100),
        // future: _initialization,
        builder: (context, snapshot) {
          // 장면전환을 천천히 부드럽게 처리하는 위젯
          return AnimatedSwitcher(
              duration: const Duration(milliseconds: 500), child: _splashLoadingWidget(snapshot));
        });
  }

// FutureBuilder 에서 딜레이 있음, 딜레이 동안은 SplashScreen(), 딜레이후에는 AppleApp() 로 이동
  StatelessWidget _splashLoadingWidget(AsyncSnapshot<Object> snapshot) {
    // future has 3 state, hasError, hasData, waiting
    if (snapshot.hasError) {
      logger.d('error occur while loading ~');
      return const Text('Error Occur');
    // } else if (snapshot.hasData) {
    } else if (snapshot.connectionState == ConnectionState.done) {
      // logger.d('data is ${snapshot.data.toString()}');
      return AppleApp();
    } else {
      return const SplashScreen();
    }
  }
}

 

 

android/build.gradle 수정 사항(참고용)

 

 

 

android/app/build.gradle 수정 사항(참고용), 최소버전 오류가 있어서 19 로 조정함.

 

 

최소버전(minSdkVersion) 오류는 아래처럼 처리할수도 있다.

16을 19로 변경.