Flutter는 기본적으로 Charles에 http 통신이 캡쳐되지 않습니다.
flutter 내부 구조에 대한 이해가 필요하겠지만 Flutter에서 http pub을 통해 api 호출을 하게되면 Charles 에 통신이 캡쳐되지 않아 디버깅/개발에 어려움이 있습니다.
해결방법: HttpOverrides 를 이용합니다
Proxied_http_overrides.dart
class ProxiedHttpOverrides extends HttpOverrides {
String _proxy;
ProxiedHttpOverrides(this. _proxy);
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return _proxy.isNotEmpty ? "PROXY $_proxy;" : 'DIRECT';
}
..badCertificateCallback = (X509Certificate cert, String host, int port) => Platform.isAndroid;
}
}
Dart
복사
위 파일을 추가합니다.
main.dart
void main() async {
Constants.setEnvironment(Environment.STAGING);
WidgetsFlutterBinding.ensureInitialized();
initializeJsonMapper();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
HttpOverrides.global = new ProxiedHttpOverrides("localhost:8888"); 👈👈👈👈👈 추가되는 라인
runApp(App());
}
Dart
복사