我认为您没有等待对话确认。您应该使用await 方法来等待该对话框的结果。我不知道你写了什么
PopUpDialog().showDeleteDialog();
方法,但它应该是异步执行后续操作的。
现在您可以编写此语句来解决该错误。
var result = await PopUpDialog().showDeleteDialog();
或者,如果 showDeletionDialog() 是异步的,您也可以这样做 ->
PopUpDialog().showDeleteDialog().then((result){
if (result == 'Success') {
print('success');
setState(() {
data.removeAt(index);
});
} else {
print('fjeodpedp');
}
});
试试这个,让我知道它是否有效。
Update
int showDeleteDialog({Function onSuccess, Function onFailure}) {
_bloc = Provider.of<Bloc>(context);
showDialog(
context: context,
builder: (BuildContext buildContext) {
return AlertDialog(
actions: <Widget>[
FlatButton(
color: Colors.orange,
child: Text('YES', style: TextStyle(color: Colors.white)),
onPressed: () async {
Navigator.pop(buildContext);
var result = await _bloc.deleteWorkOrder();
if(onSuccess!=null) onSuccess(result); <------ Here you can pass your result directly to the function.
return result;
},
),
FlatButton(
color: Colors.white,
child: Text('CANCEL'),
onPressed: () {
if(onFailure!=null) onFailure();
Navigator.of(buildContext, rootNavigator: true)
.pop('dialog');
},
)
],
title: Text(Localization.of(buildContext).deleteDialogTitle),
content: Text(Localization.of(buildContext).deleteDialogContent));
});
return 0;
}
你的成功函数会是这样的
onSuccess(result){
if (result == 'Success') {
print('success');
setState(() {
data.removeAt(index);
});
} else {
print('fjeodpedp');
}
}
onFailure(){
//Add your failiure logic here.
}