본문 바로가기
Flutter/Flutter FAQ

Flutter 다이얼로그가 열려 있는 동안에 뒤로 버튼을 누르는 것을 감지하십시오., Detect back button press while dialog is open in flutter

by 베타코드 2023. 12. 15.
반응형

질문


저는 플러터에서 알림 대화 상자를 표시해야하는 앱을 만들고 있습니다. 그리고 이 대화 상자는 닫을 수 없는 대화 상자가 아닙니다. 하지만 안드로이드에서 뒤로 버튼을 누르면 대화 상자가 사라집니다. 뒤로 버튼 누름 이벤트를 감지하기 위해 WillPopScope 위젯을 사용해보았습니다. WillPopScope를 사용하여 뒤로 버튼을 누르는 것을 감지할 수는 있지만 대화 상자가 열려 있는 동안에는 작동하지 않습니다. 어떤 제안과 안내가 정말로 도움이 될 것입니다. 감사합니다.

대화 상자 생성 스니펫:

void buildMaterialDialog(
  String dialogTitle,
  String dialogContent,
  String negativeBtnText,
  String positiveBtnText,
  String positiveTextUri) {

showDialog(
    context: context,
    barrierDismissible: false,
    builder: (BuildContext context) {
      return new AlertDialog(
        title: new Text(dialogTitle),
        content: new Text(dialogContent),
        actions: <Widget>[
          new FlatButton(
            onPressed: () {
              //Function called
              _updateDialogNegBtnClicked(isCancelable);
            },
            child: new Text(negativeBtnText),
          ),
          new FlatButton(
            onPressed: () => launch(positiveTextUri),
            child: new Text(positiveBtnText),
          ),
        ],
      );
    });}

답변


뒤로 가기 버튼은 대화 상자를 닫지 않습니다.

showDialog(
  context: context,
  barrierDismissible: false,
  builder: (BuildContext context) {
    return WillPopScope(
      onWillPop: () async => false, // False는 방지하고 true는 닫히도록 허용합니다.
      child: AlertDialog(
        title: Text('제목'),
        content: Text('이것은 데모입니다.'),
        actions: <Widget>[
          FlatButton(
            onPressed: () => Navigator.pop(context),
            child: Text('뒤로 가기'),
          ),
        ],
      ),
    );
  },
);
반응형

댓글