Open3

[Flutter]Dio

ikeponikepon
  • 基本はこれで 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