Open3
[Flutter]Dio
API はこれが使えそう
- 基本はこれで OK だと思う
class ApiClient {
final Dio _dio = Dio();
String baseUrl = 'https://reqres.in/api';
Future<User?> getUser({required String id}) async {
User? user;
try {
Response userData = await _dio.get('$baseUrl/users/$id');
print('================ ${userData.data} ===============');
user = User.fromJson(userData.data);
} on DioError catch (e) {
print(e);
}
return user;
}
}
- BaseOptions を使って baseUrl を設定しようと思っていじってるけどエラーが出る
- これだと一回目はうまく取れてるっぽいけど、その後にエラーを吐く
class ApiClient {
static BaseOptions options = BaseOptions(
baseUrl: 'https://reqres.in/api',
connectTimeout: 5000,
receiveTimeout: 3000,
);
final Dio _dio = Dio(options);
Future<User?> getUser({required String id}) async {
User? user;
try {
Response userData = await _dio.get('/users/$id');
print('================ ${userData.data} ===============');
user = User.fromJson(userData.data);
} on DioError catch (e) {
print(e);
}
return user;
}
}
エラー内容
Performing hot restart... 89ms
Restarted application in 89ms.
================ {data: {id: 1, email: george.bluth@reqres.in, first_name: George, last_name: Bluth, avatar:
https://reqres.in/img/faces/1-image.jpg}, support: {url: https://reqres.in/#support-heading, text: To keep ReqRes free,
contributions towards server costs are appreciated!}} ===============
Error: Bad state: Future already completed
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw_
dart-sdk/lib/async/future_impl.dart 15:79 completeError
packages/dio/src/adapters/browser_adapter.dart 70:22 <fn>
dart-sdk/lib/async/zone.dart 1653:54 runUnary
dart-sdk/lib/async/future_impl.dart 147:18 handleValue
dart-sdk/lib/async/future_impl.dart 766:44 handleValueCallback
dart-sdk/lib/async/future_impl.dart 795:13 _propagateToListeners
dart-sdk/lib/async/future_impl.dart 557:7 [_complete]
dart-sdk/lib/async/future.dart 421:15 <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19 internalCallback