SplashPage는 로그인이 되어있는지 파악하면서 WelcomePage와 HomePage의 분기점이 된다
따라서 SplashPage를 제대로 선언해놓고 WelcomePage와 HomePage를 선언하는게 순서인듯 하다
class SplashPage extends StatefulWidget{
SplashPage({Key key}) : super(key : key);
@override
_SplashPageState createState() => _SplashPageState();
}
class SplashPageState extends State {
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallBack(() {
timer();
});
super.initState();
}
void timer() async 라는 함수가 특이하다
Future객체의 delayed 서브루틴을 바인드엑세스 후 주입한 후에 실행선언을 한 뒤 프로바이더 객체의 of 서브루틴에 AuthState를 바인드엑세스 후 주입 한 뒤 스테이트 프로바이딩을 하고 리턴된 스테이트 객체에서 getCurrentUser를 바인드엑세스 주입 후에 선언한다.
AuthStatus 에서 NOT_DETERMINED, NOT_LOGGED_IN? 에 따라서
3가지 _body(), WelcomePage(), HomePage()
로 하는데 여기다 State를 주입해놓았기 때문에 Change 주입 후에 notifyListener 둘다 Hit되면 화면이 ReRendering 되는듯 하다
body: state.authStatus == AuthStatus.NOT_DETERMINED
? _body()
: state.authStatus == AuthStatus.NOT_LOGGED_IN
? WelcomePage()
: HomePage(),