kookmin-sw / capstone-2024-45

시간은행 v2
https://kookmin-sw.github.io/capstone-2024-45/
1 stars 1 forks source link

[front] 앱 시작화면 무한 로딩 #34

Closed Heo-jieun closed 3 months ago

sunJ0120 commented 4 months ago

혹시

void initState() {
    super.initState();
    Timer(const Duration(seconds: 5), () {
      checkPermissionsAndNavigate();
    });
  }

  Future<void> checkPermissionsAndNavigate() async {
    PermissionStatus cameraPermissionStatus = await Permission.camera.status;

    if (cameraPermissionStatus.isGranted) {
      Navigator.push(context, MaterialPageRoute(builder: (context) => MainAccount()));
    } else {
      Navigator.push(context, MaterialPageRoute(builder: (context) => PermissionWidget()));
    }
  }

이 부분 확인해보셨을까요? Timer(const Duration(seconds: 5), <- 이게 timer의 역할이라 지정된 초 뒤에 Navigator.push로 연결된 부분으로 이동이 되어야 합니다.

Heo-jieun commented 4 months ago

@override void initState() { super.initState(); user = User(); accountInfo = UserAccountInfo(); // 차례대로 수행될 수 있도록 // _fetchUserData가 완료된 후 _fetchUserAccountData를 호출하도록 함 fetchUserData().then(() { fetchUserAccountData().then(() { _navigateToNextScreen(); }); }); }

...(생략)

// 사용자 정보유무, 계좌 개설 여부에 따라 제공되는 화면 달라짐. void _navigateToNextScreen() { setState(() { if(user.id == ''){ // 회원정보가 없으므로 회원가입 화면으로 Navigator.push(context, MaterialPageRoute(builder: (context) => signingUP())); } else if (accountInfo.AccountId == ''){ // 게좌개설이 안되어 있으므로 계좌개설 화면으로 Navigator.push(context, MaterialPageRoute(builder: (context) => defaultAccount())); } else { //계좌개설, 회원가입 모두 되어 있으므로 메인 계좌 화면으로 Navigator.push(context, MaterialPageRoute(builder: (context) => MainAccount())); } }); }

일단 이렇게 구현을 해 두었는데 저희 앱로딩 순서가 앱 권한 설정 여부에 관한 것 먼저 해결하고 그 다음이 회원가입 프로세스로 넘거가든 main Account로 넘어가든 하는것이니 이부분은 home이 아닌 다른 부분에서 구현하는게 좋을 것 같네요. 어디서 화면이 넘어가게 할지 같이 이야기 해봐야 할것 같아요.