我正在嘗試制作一個包裹。我需要使用異步功能,但我不能在構建包時使用它。
包裝代碼:
class Sozluk {
wiki(ceviri) async {
var res = await http.Client()
.get(Uri.parse('https://sozluk.gov.tr/gts?ara=$ceviri'));
var body = res.body;
var decoded = jsonDecode(body);
var json = decoded[0];
var sozlukanlam = json["anlamlarListe"][0]["anlam"];
print(sozlukanlam);
return sozlukanlam;
}
}
測驗代碼:
void main() {
test('k?pek', () {
final sozluk = Sozluk();
var cevap = sozluk.wiki('k?pek');
print(cevap);
});
}
我得到的印刷品:
Instance of 'Future<dynamic>'
uj5u.com熱心網友回復:
您的代碼缺少很多部分。僅僅因為 Dart 允許您像一個草率的 Web 開發人員一樣撰寫代碼,并不意味著您應該這樣做。Dart 是強型別的,這是一個優勢,請使用它。
問題:
ceviri沒有明確的型別。wiki沒有明確的回傳型別。wiki未await編輯- 您的匿名方法不是
async。
Future有關s 的更多資訊,async以及await:什么是 Future 以及如何使用它?
盡可能好地修復您的代碼:
class Sozluk {
Future<TYPE_X> wiki(TYPE_Y ceviri) async {
var res = await http.Client()
.get(Uri.parse('https://sozluk.gov.tr/gts?ara=$ceviri'));
var body = res.body;
var decoded = jsonDecode(body);
var json = decoded[0];
var sozlukanlam = json["anlamlarListe"][0]["anlam"];
print(sozlukanlam);
return sozlukanlam;
}
}
測驗代碼:
void main() {
test('k?pek', () async {
final sozluk = Sozluk();
var cevap = await sozluk.wiki('k?pek');
print(cevap);
});
}
請注意,您需要填寫 TYPE_X 和 TYPE_Y,我不知道哪種資料型別最能代表您的資料。是數字嗎?文字?你決定。
uj5u.com熱心網友回復:
你的問題不清楚。
如果您需要列印
索盧坎蘭
var in test 函式你需要等待你的wiki函式,因為它是異步的。
所以你可以這樣做:
void main() {
test('k?pek', () async {
final sozluk = Sozluk();
var cevap = await sozluk.wiki('k?pek');
print(cevap);
});
}
或者,如果測驗功能不能異步
void main() {
test('k?pek', () {
final sozluk = Sozluk();
sozluk.wiki('k?pek').then((sozlukanlam)=>print(cevap));
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427321.html
