7월, 2023의 게시물 표시

Flutter 에서 Parent Widget 강제로 Update 하는 방법

Flutter 에서 이런 경우가 종종 있다. 홈 화면에서 버튼을 터치하면 기능화면으로 이동한다. 홈화면과 기능화면에 각각 포인트의 상황을 나타내는 텍스트가 있다. 기능 화면에서 포인트를 하나 감소 시킨다. 기능 화면 상단의 돌아가기 버튼을 터치하면 홈화면의 포인트로 감소된 상태로 보여야 한다. 하지만 홈 화면의 포인트는 감소 전의 상태로 보인다. parent widget update 로 검색해도 뻘소리만 나온다. 나의 해결 방안은 이렇다. 기능화면에서 버튼 터치를 홈 화면으로 전달한다. 홈 화면에서 전달된 버튼 이벤트의 로직에 포인트 감소를 처리한다. 기능화면 소스는 이렇다 class DangYoungPage extends StatefulWidget { const DangYoungPage ({ super . key , required this .onClosed}); final Function ( bool ) onClosed; @override State < DangYoungPage > createState () => _DangYoungPageState (); } 선언은 이렇게 해야 부모 위젯에 이벤트를 전달할 수 있다. AppBar ( title : Text ( 'dangYoung' . tr ()), backgroundColor : Theme . of ( context ).colorScheme.inversePrimary, centerTitle : true , automaticallyImplyLeading : true , leading : IconButton ( onPressed : () { widget.onClosed( true ); Navigator . pop ( context ); }, icon : const Icon ( Icons .arrow_back), ), ), Scaffold 앱 바의 내용을 변경하고 여기 이벤트를