DevBoi

[Flutter] Dialog 콜백 값 핸들링 본문

[Mobile]/[Flutter]

[Flutter] Dialog 콜백 값 핸들링

HiSmith 2023. 9. 2. 13:58
반응형

아래와 같이 플러팅 버튼을 누를때, 다이얼 로그 에 대한 노출을 한다.

floatingActionButton: FloatingActionButton(
        onPressed: ((){
        showDialog(
            context: context,
            builder: (BuildContext context){
              return AlertDialog(
                content:  CreatePopup(),
              );
            })

이후에 값을 받아올때는 아래와 같이 구현한다.

 showDialog(
            context: context,
            builder: (BuildContext context){
              return AlertDialog(
                content:  CreatePopup(),
              );
            }).then((value) {
              setState(() {
                reportList = value;
                this.getResult(reportList);
              });
        });

 

이러면 컨텍스트간의 값으로, 쉽게 얘기하면 다이얼로그값을 바탕으로 해당 부모 위젯에 대한 상태관리를 할 수 있다.

Dialog에서 버튼을 누르게 되면, 값이저장되고 팝업이 닫히게 된다.

이때 값을 부모 위젯으로 다시 보내는 것이고 예제는 아래와 같다.

MaterialButton(
              color: Theme.of(context).colorScheme.secondary,
              height: 30,
              child: const Text(
                "Save",
                style: TextStyle(color: Colors.white),
              ),
              onPressed: () {
                _formKey.currentState!.saveAndValidate();
                Report report = Report.fromMap(_formKey.currentState?.value);
                dataInterface.save(report).then((value) => Navigator.pop(context,dataInterface.load()));
                //print(dataInterface.load());
              },
            ),

 

Navigator pop시점에 해당 값들을 다시 부모 위젯으로 넘겨주게되고

showDialog value에 해당 Navigator.pop(context,리턴 벨류스) 에서 리턴 벨류스에 값을 받을 수 있게 된다.

반응형

'[Mobile] > [Flutter]' 카테고리의 다른 글

[Flutter] Getx로 전역 Provider 설정  (0) 2023.09.07
[Flutter] FutureBuilder setState 동작 이슈  (0) 2023.09.03
[Flutter] initState 이전 데이터 세팅  (0) 2023.09.02
[Flutter] Chip 사용  (0) 2023.08.28
[Flutter] 팝업 구현  (0) 2023.08.26