// main.dart
final bindings = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: bindings);
// s_main.dart //메인 스크린
class MainScreenState ... with AfterLayoutMixin {
FutureOr<void> afterFirstLayout(BuildContext context) {
FlutterNativeSplash.remove();
}
}
WidgetsFlutterBinding.ensureInitialized()
FlutterNativeSplash.preserve(widgetsBinding: bindings)
with AfterLayoutMixin
and afterFirstLayout(...)
찾아보니, 앱을 실행하기 전에 프레임워크의 초기화를 처리하는 메서드라고 한다.
앱 실행전 데이터를 받거나 상호 작용이 필요하다면 꼭 사용해야 한다.
나의 경우, 스플레시 스크린 사용시 이것을 썻다.
// main.dart
final bindings = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: bindings); //스플레시 시작에 위젯 바인딩
이로써, 스플레시 화면이 노출되고 언제 제거(로직이 끝난 후
)할지 정할 수 있다.
<void> afterFirstLayout(BuildContext context) {
await logic;
FlutterNativeSplash.remove();
}
FutureOr
여기선 afterFirstLayout
에서 스플레시 화면을 제거해주면 된다.
참고) initState에서 제거할 경우, 에러 발생.
이유는 initState에선 상태만 변경되야 하는데 화면이 변경되서 그렇다.