web-dev-qa-db-ja.com

Flutter-DartのFutureからエラーを返すにはどうすればよいですか?

私のフラッターアプリには、httpリクエストを処理し、デコードされたデータを返すfutureがあります。しかし、.catchError()ハンドラーで取得できるstatus code != 200がある場合にエラーを送信できるようにしたいと思います。

未来が見える:

Future<List> getEvents(String customerID) async {
  var response = await http.get(
    Uri.encodeFull(...)
  );

  if (response.statusCode == 200){
    return jsonDecode(response.body);
  }else{
    // I want to return error here 
  }
}

この関数を呼び出すと、次のようなエラーが発生するようにしたいと思います。

getEvents(customerID)
.then(
  ...
).catchError(
  (error) => print(error)
);
14

throwを使用できます。

Future<List> getEvents(String customerID) async {
  var response = await http.get(
    Uri.encodeFull(...)
  );

  if (response.statusCode == 200){
    return jsonDecode(response.body);
  }else{
    // I want to return error here 
       throw("some arbitrary error"); // error thrown
  }
}
10
anmol.majhail

エラーをcatchError()内でキャッチするには、returnを使用します

エラーをtry/catch内でキャッチするには、throwを使用します。

return Future.error("This is the error", StackTrace.fromString("This is its trace"));
15
CopsOnRoad