dart:io の HttpClient は findProxy を通じてプロキシの判断を受け取ります。コールバックは PAC 形式の指示を返します:

import 'dart:io';

final client = HttpClient()
  ..findProxy = (_) => 'PROXY proxy.example.net:8080';

このクライアントをアプリケーションのリクエストに使います。http://proxy.example.net:8080 を返すのはこのコールバックでは誤った形式で、PROXY に続けてホストとポートを書くのが対応する形式です。許可された公開リクエストでは、HTTP プロキシ一覧から HTTP の候補を選び、その指示の形に整えます。

コールバックは宛先 URI を受け取るため、意図的な迂回として DIRECT を返せます。PROXY proxy.example.net:8080; DIRECT のような結果は、プロキシが使えないときの直接フォールバックも許可します。そのフォールバックが不要なら DIRECT を省きます。

findProxy 関数がない場合、この API は直接接続を使います。環境変数による選択を望むアプリケーションは、代わりに HttpClient.findProxyFromEnvironment をコールバックに割り当てられます。

これは対応するネイティブプラットフォームで dart:io を使う Flutter のコードに当てはまります。Flutter Web のリクエストはブラウザのネットワーク機能を使い、ブラウザのプロキシ設定を必要とします。

関連記事