본문 바로가기
Dart&Flutter

[ Flutter ] 화면 초기화 & 화면 재설정 & stack 데이터가 남아 있는 문제 해결 방법

by 알기 쉬운 코딩 사전 2023. 9. 1.
반응형

개발 환경

OS : windows

IDE : VSC ( Flutter) & STS ( Spring )

개발 언어 : Dart & Java

 

서론

프로젝트 진행 시 회원가입 버튼을 누르면 회원가입이 정상적으로 완료가 되었는데도 메인 화면( 로그인 화면 )에서 회원가입 버튼을 누르면 전에 입력했던 user id 와 user name 등의 입력값이 그대로 남아있었습니다.

 

  • DB에 회원가입값은 정상적으로 저장되었습니다.

 

 

 

생각하기

화면 초기화 관련 문제인가 생각해 보았지만 Flutter의 stateful 객체는 자동으로 생성되어 화면 초기화를 해주는 것으로 알고 있었습니다. (자동으로 빌드 되기 때문에) 그래서 initSinUpScreen이라는 view class를 또 생성해 주어야 하나 고민을 하고 있었습니다. 하지만 다른 방법으로 접근해서 문제를 해결했습니다.

 

해결 방법

Class 내부에 dispose 함수를 추가해 input 값의 TextEditingController 값을 초기화해주면 됩니다.

dipose 함수란 간단히 말하면 화면이 다른 화면으로 넘어갈 때 실행하는 함수입니다.

 

TextEditingController controller 부분의 소스 코드

  TextEditingController idController = TextEditingController();
  TextEditingController nameController = TextEditingController();
  TextEditingController psController = TextEditingController();
  TextEditingController psConfirmController = TextEditingController();

 

추가한 dispose 부분의 소스 코드

  @override
  void dispose() {
    idController.dispose();
    nameController.dispose();
    psController.dispose();
    psConfirmController.dispose();
    super.dispose();
  }

 

정상적으로 회원가입 화면에서 > 로그인 화면 > 회원가입 화면으로 바뀌어도 화면에 남아있는 데이터는 없게 되었습니다.

 

추가로 Flutter stateful LifeCycle에 관련된 링크입니다. 참고하시면 많은 도움이 되실 것 같습니다.

https://jaceshim.github.io/2019/01/28/flutter-study-stateful-widget-lifecycle/

반응형

댓글