我向用户显示一个对话框以告知一些信息,然后捕获此输入并执行我的逻辑,但是,该对话框不仅关闭,而且导航到旧页面...
我正在寻找并尝试发现的所有东西: 我尝试:
Navigator.of(context, rootNavigator: true).pop(value)
Navigator.of(context, rootNavigator: false).pop(value)
Navigator.pop()
Navigator.of(context).pop(value)
我不知道该怎么做...
这是我的代码: 我的对话框
Future<String> _showSearchList(BuildContext context) {
TextEditingController customController = TextEditingController();
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: Container(
width: 100,
height: 100,
child: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: "Senha da lista"),
controller: customController,
),
],
),
),
actions: <Widget>[
MaterialButton(
onPressed: () => Navigator.of(context, rootNavigator: false)
.pop(customController.text.toString()),
elevation: 5.0,
child: Text("Entrar"),
),
],
);
},
);
}
调用对话框时的功能
onPressed: () {
if (!_formKey.currentState.validate()) return;
setState(() {
busy = true;
});
_formKey.currentState.save();
_listRepository.getByList(_codLista).then(
(value) {
print(value);
if (value.codigo == "") {
SnackBar mySnackBar = SnackBar(
content: Text("Codigo inválido"),
);
Scaffold.of(context).showSnackBar(mySnackBar);
} else {
_listaFinal = value;
_showSearchList(context).then((value) {
if (value == _listaFinal.password) {
_userRepository
.getAllUserOfListByListaId(_listaFinal.id)
.then((value) {
value.forEach((element) {
if (element.id.toUpperCase() == bloc.id.toUpperCase()) {
_iHaveBeenAdd = true;
}
});
bloc.addCompleteValueinList(value);
setState(() {
busy = false;
_isLoad = true;
});
});
} else {
SnackBar mySnackBar = SnackBar(
content: Text("Senha Inválida"),
);
Scaffold.of(context).showSnackBar(mySnackBar);
setState(() {
busy = false;
});
}
});
}
},
);
},
请有人帮我。谢谢。