Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ dependencies:

```

### Usage (Example With Dio)
### Basic Usage (Example With Dio)

```dart
import 'package:flutter_system_proxy/flutter_system_proxy.dart';
Expand All @@ -36,3 +36,41 @@ var proxy = await FlutterSystemProxy.findProxyFromEnvironment(url);
};
var response = await dio.get(url);
```

### Advanced Usage (Custom Dio Adapter)

```dart

// Create a custom adapter that can help resolve proxy based on urls
// (This is important as in some senerio there are PAC files which might have different proxy based on different urls)
class MyAdapter extends HttpClientAdapter {
final DefaultHttpClientAdapter _adapter = DefaultHttpClientAdapter();

@override
Future<ResponseBody> fetch(RequestOptions options,
Stream<Uint8List>? requestStream, Future? cancelFuture) async {
var uri = options.uri;
var proxy =
await FlutterSystemProxy.findProxyFromEnvironment(uri.toString()); // This line does the magic
_adapter.onHttpClientCreate = (HttpClient clinet) {
clinet.findProxy = (uri) {
return proxy;
};
};
return _adapter.fetch(options, requestStream, cancelFuture);
}

@override
void close({bool force = false}) {
_adapter.close(force: force);
}
}

// Use a wrapper around getting dio
void getDio(){
var dio = Dio();
dio.httpClientAdapter = MyAdapter();
return dio;
}

```