import 'package:http/http.dart' as http;
import 'dart:io';
Future<String> getIdToken({bool? force}) async {
  // fetch update token
  return "abc*******";
}

Future<void> main() async {
  final client = http.Client();
  String token = await getIdToken();
  http.Response response = await getRequestWithToken(token);
  if (response.statusCode == 401) {
    token = await getIdToken();
    response = await getRequestWithToken(token);
  }
}

Future<http.Response> getRequestWithToken(String token) async {
  final response = await client.get(Uri.parse("https://senkyaku.jp"), 
                                    headers: {
  HttpHeaders.authorizationHeader: 'Bearer $token',
  },);
  return response;
}