我试图根据数据类型执行不同的提取,但我总是得到相同的数据。下面是我获取数据的代码:
Future.delayed(Duration.zero, () async {
if (widget.vrstaDokumenta == "Moji zadaci") {
var dokumenti =
await _dokumentiService!.getForApprovalByType(widget.tipId ?? 0);
}
if (widget.vrstaDokumenta == "Moji dokumenti") {
var dokumenti =
await _dokumentiService!.getMojiDokumentiByType(widget.tipId ?? 0);
}
var dokumenti =
await _dokumentiService!.getSharedDocumentsByType(widget.tipId ?? 0);
setState(() {
_dokumenti = dokumenti;
_dokumentiSearch = dokumenti;
isLoading = false;
});
});
我总是执行以下代码:
var dokumenti =
await _dokumentiService!.getSharedDocumentsByType(widget.tipId ?? 0);
如果有人能提供建议,请表示感谢。提前谢谢!
这样写,看看会发生什么:
if (widget.vrstaDokumenta == "Moji zadaci") {
var dokumenti =
await _dokumentiService!.getForApprovalByType(widget.tipId ?? 0);
}
else if (widget.vrstaDokumenta == "Moji dokumenti") {
var dokumenti =
await _dokumentiService!.getMojiDokumentiByType(widget.tipId ?? 0);
}else{
var dokumenti =
await _dokumentiService!.getSharedDocumentsByType(widget.tipId ?? 0);
}
基本上,您总是两次设置dokumenti的值,首先设置正确的值,然后通过调用_dokumentService.getSharedDocumentsByType((来覆盖它。也可以考虑将其封装在条件中。
然而,使用开关/案例将最适合你正在尝试做的事情。
switch(widget.vrstaDokumenta) {
case "Moji zadaci":
var dokumenti =
await _dokumentiService!.getForApprovalByType(widget.tipId ?? 0);
case: "Moji Dokumenti":
var dokumenti =
await _dokumentiService!.getMojiDokumentiByType(widget.tipId ?? 0);
default:
var dokumenti =
await _dokumentiService!.getSharedDocumentsByType(widget.tipId ?? 0);
}
考虑将switchcase语句封装在一个单独的函数中,使其更加干净。
我这样做了,现在它正在工作:
if (widget.vrstaDokumenta == "Moji zadaci") {
Future.delayed(Duration.zero, () async {
var dokumenti =
await _dokumentiService!.getForApprovalByType(widget.tipId ?? 0);
setState(() {
_dokumenti = dokumenti;
_dokumentiSearch = dokumenti;
isLoading = false;
});
});
}
if (widget.vrstaDokumenta == "Moji dokumenti") {
Future.delayed(Duration.zero, () async {
var dokumenti =
await _dokumentiService!.getMojiDokumentiByType(widget.tipId ?? 0);
setState(() {
_dokumenti = dokumenti;
_dokumentiSearch = dokumenti;
isLoading = false;
});
});
}
if (widget.vrstaDokumenta == "Podijeljeni") {
Future.delayed(Duration.zero, () async {
var dokumenti =
await _dokumentiService!.getSharedDocumentsByType(widget.tipId ?? 0);
setState(() {
_dokumenti = dokumenti;
_dokumentiSearch = dokumenti;
isLoading = false;
});
});
}