Flutter AlertDialog Navigator поп черный экран проблема - PullRequest
0 голосов
/ 07 декабря 2018

У меня странная проблема с AlertDialog во флаттере, чтобы закрыть диалоговое окно.Я использовал приведенный ниже фрагмент кода, чтобы закрыть диалоговое окно, как указано в документации по флаттеру.

 Navigator.of(dialogContext).pop();

Но покажите, как это не работает, переведите приложение в неактивный режим и превратитесь в черное окно экрана.Чтобы это снова заработало, мне нужно убить приложение и перезапустить снова.

Здесь приведен полный код alerttdialog во флаттере

Future<Null> _showDialogContactDial(context, Contact contactRecord) async {

  return showDialog<Null>(
    context: context,
    barrierDismissible: true, // user must tap button!
    builder: (BuildContext dialogContext) {
      return new AlertDialog(
        title: new Text('Confirm Number'),
        content: new SingleChildScrollView(
          child: new ListBody(
            children: <Widget>[
              new TextFormField(
                maxLines: 1,
                decoration: new InputDecoration(hintText: 'Number'),
                keyboardType: TextInputType.number,
                autofocus: false,
                initialValue: contactRecord.phoneNumber.number,
              ),
            ],
          ),
        ),
        actions: <Widget>[
          new FlatButton(
            child: new Text(
              'Call',
              style: TextStyle(color: Colors.black),
            ),
            onPressed: () {
              Navigator.of(dialogContext).pop();


              _launchURL(
                  context);
            },
          ),
          new FlatButton(
            color: Colors.red,
            child: new Text('Close', style: TextStyle(color: Colors.white)),
            onPressed: () {
              Navigator.of(dialogContext).pop();
            },
          ),
        ],
      );
    },
  );
}

Я также заметил, что он работает для одной кнопки «вызов» без каких-либо проблем, но не для диалога предупреждения об отмене, как вы видите водин и тот же фрагмент кода в обоих действиях кнопки.

dialog after the dialogdismiss app Помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Просто добавьте rootNavigator:true

Navigator.of(dialogcon, rootNavigator: true).pop();
0 голосов
/ 07 декабря 2018

Это сработало в моем приложении, я сделал небольшие изменения в вашем коде, надеюсь, это может помочь, если это вам не поможет, то я думаю, что здесь проблема в методе _launchURl.

void _showDialogContactDial(BuildContext context, Contact contactRecord){

showDialog<Null>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext dialogContext) {
  return new AlertDialog(
    title: new Text('Confirm Number'),
    content: new SingleChildScrollView(
      child: new ListBody(
        children: <Widget>[
          new TextFormField(
            maxLines: 1,
            decoration: new InputDecoration(hintText: 'Number'),
            keyboardType: TextInputType.number,
            autofocus: false,
            initialValue: contactRecord.phoneNumber.number,
          ),
        ],
      ),
    ),
    actions: <Widget>[
      new FlatButton(
        child: new Text(
          'Call',
          style: TextStyle(color: Colors.black),
        ),
        onPressed: () {
          Navigator.of(dialogContext).pop();


          _launchURL(
              context);
        },
      ),
      new FlatButton(
        color: Colors.red,
        child: new Text('Close', style: TextStyle(color: Colors.white)),
        onPressed: () {
          Navigator.of(dialogContext).pop();
        },
      ),
    ],
  );
},

);}

Используйте этот метод в качестве обратного вызова для onTap или везде, где вы его используете.

...