파파비의 블로그

플러터, flutter) Dismissible 확인절차 갖기 & AlertDialog 사용방법 본문

개발/flutter

플러터, flutter) Dismissible 확인절차 갖기 & AlertDialog 사용방법

N. Dave 2020. 6. 9. 17:10
반응형

Dismissible에서 스와이프하면 자동으로 사라진다.

그런데 만약 이때 확인/취소 절차를 만들고 싶다면?

 

Dismissible에는 confirmDismiss라는 속성이 있다.

여기에는 메소드가 들어가는데, DismissDirection이 인자로 들어가고, return 값은 Future<bool>이다.

 

여기서 만약 Future 값이 true면 그대로 실행되고,

false면 취소가 된다.

 

여기서는

confirmDismiss에 showDialog를 넣었다.

 

point1) showDialog는 Future<bool>을 리턴할 '수' 있기 때문에 우리가 그렇게 되게 하였다.

point2) showDialog는 snackbar처럼 Scaffold를 통해 생성하지 않는다. 화면에 기생하는 것은 아니기 때문이다.

 

그래도 showDialog는 context를 필수로 갖는다. widget tree에서 어디에 만들어야 화면에 보일지 알아야하기 때문이다.

 

point3) builder 속성을 통해 어떤 dialog를 보여줄지 확정했다. 우리는 AlertDialog 위젯을 보여주기로 결정했다.

다양한 위젯들이 많은데, 이게 제일 보편적인 Dialog이다.

title은 상단에 보여지는 문구이고, content는 중간에 좀 더 작은 글씨로 보여진다.

action은 flatbutton을 받는데, 선택할 수 있는 곳들이다.

 

그런데 showdialog에게 결과값을 어떻게 전달 할 수 있을까?

<언제나 마우스를 올려서 힌트들을 잘 찾아보길 바란다>

여기를 읽어보면 Navigator.pop을 통해 값을 전달하면 된다고 한다.

그래서 action안에 있는 버튼에서

'yes'를 누르면 Navigator.pop(true); 를 실행하게 했고,

'no를 누르면 Navigator.pop(false); 를 실행하게 했다.

 

어차피 dialog는 새로운 화면이 뜨는 것이라, 없애려면 Navigator.pop의 과정이 필요하다

그때 원하는 값을 전달하면 된다.

 

반응형
Comments