[야나두] flutter 스플레시 화면 회고

박경수·2024년 3월 7일
0

코드

// main.dart

final bindings = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: bindings);
// s_main.dart //메인 스크린

class MainScreenState ... with AfterLayoutMixin {
  
  FutureOr<void> afterFirstLayout(BuildContext context) {
    FlutterNativeSplash.remove();
  }

}

문제

  1. WidgetsFlutterBinding.ensureInitialized()
  2. FlutterNativeSplash.preserve(widgetsBinding: bindings)
  3. with AfterLayoutMixin and afterFirstLayout(...)

정리

WidgetsFlutterBinding.ensureInitialized()

찾아보니, 앱을 실행하기 전에 프레임워크의 초기화를 처리하는 메서드라고 한다.
앱 실행전 데이터를 받거나 상호 작용이 필요하다면 꼭 사용해야 한다.

나의 경우, 스플레시 스크린 사용시 이것을 썻다.

// main.dart

final bindings = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: bindings); //스플레시 시작에 위젯 바인딩

이로써, 스플레시 화면이 노출되고 언제 제거(로직이 끝난 후)할지 정할 수 있다.

afterFirstLayout()


FutureOr<void> afterFirstLayout(BuildContext context) {
  await logic;
  FlutterNativeSplash.remove();
 }

여기선 afterFirstLayout에서 스플레시 화면을 제거해주면 된다.

참고) initState에서 제거할 경우, 에러 발생.
이유는 initState에선 상태만 변경되야 하는데 화면이 변경되서 그렇다.

profile
<>{...}</>

0개의 댓글

관련 채용 정보