如何使用flutter injectable库在运行时更改依赖关系?

mrphzbgm  于 2023-05-08  发布在  Flutter
关注(0)|答案(1)|浏览(108)

我正在开发一个使用injectableget_it库的flutter应用程序。
我有一个Dio引用,其中包含从LocaleStorage服务获取的Auth令牌。当我在运行时更改它时,它不会更新。因此,我从API服务中获得了未经授权的用户错误。
这里是我的模块??️

@module
abstract class NetworkingModule {

  Dio getDio(UserModelLocalStorageService localStorageService) {
    final Dio dio = Dio()
      ..interceptors.addAll([
        if (!kReleaseMode) PrettyDioLogger(requestBody: true, requestHeader: true),
      ]);
    dio.options.headers["device-id"] = "1uazj1234";
    dio.options.headers["Authorization"] = localStorageService.getAccessToken();
    return dio;
  }

  @lazySingleton
  AuthApiService getCharacterListApiService(Dio dio, AppConfig appConfig) =>
      AuthApiService(dio, baseUrl: appConfig.baseUrl);
  
}

先谢谢你,

2wnc66cl

2wnc66cl1#

你可以按如下方式解决这个问题️

final Dio dio = Dio();
dio.interceptors.add(
  InterceptorsWrapper(
    onRequest: (options, interceptor) async {
      final token = localStorageService.getAccessToken().toBearer();
      options.headers["Authorization"] = token;
      interceptor.next(options);
    },
    onError: (e, interceptor) async {
      // do something here if call fails, for example token refresh if it is expired
    },
  ),
);

感谢@martirius的解决方案🙏

相关问题