搜索插件、代码仓与 APP 分类

插件详情v0.1.0

system_proxy

一个 Flutter 插件,用于获取系统插件。可用于为 dart HttpClient 设置代理以抓取请求。

AndroidiOS
近 30 天下载
8230
喜欢数
23
Pub 分数
150

安装插件

flutter pub add system_proxy

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

system_proxy 包是一个 Flutter 插件,可在 Android 和 iOS 上访问系统配置的代理设置。它允许开发者获取系统的代理配置,并将其应用于 Dart 的 HttpClient,确保网络请求尊重设备的网络环境。这对于需要在企业或受限网络后运行的应用程序尤其有用,因为这些网络环境强制要求使用代理设置。该插件通过提供一个简单的 API 来提取代理详细信息(如主机、端口和排除规则),简化了集成过程。

适合场景

  • 在企业应用程序中访问系统代理设置
  • 使用系统代理配置 HttpClient
  • 确保符合公司网络策略
  • 在 Android 和 iOS 上自动处理代理配置
  • 在受限网络环境中启用互联网访问

主要特点

  • 在 Android 和 iOS 上检索系统代理设置
  • 支持 Dart HttpClient 代理配置
  • 自动检测代理主机和端口
  • 处理代理排除列表
  • 跨平台兼容性

适合对象

  • 企业移动应用
  • 需要网络透明度的应用程序
  • 为受限网络开发工具的开发者
  • 需要自动代理设置的项目
  • 在受控网络环境中部署的Flutter应用

使用建议

  • 需要适当的平台权限
  • 如果未配置系统代理,可能无法正常工作
  • 仅限 HTTP/HTTPS 代理设置
  • 不支持 SOCKS 代理
  • 依赖正确的系统级代理配置

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

system_proxy

A Flutter Plugin to get system proxy setting. It is used to proxy for Flutter and Dart HttpClient request。Because Dart HttpClient does not adapt the system proxy setting automatically in default, it's difficult to grab requests for testing .

获取系统代理配置。 可用于为flutter的Dart HttpClient的请求设置代理,因为默认Dart请求不会理睬系统代理配置,这对于抓取请求来进行测试等场景造成不小困难。

Getting Started

Install

Please add the plugin to pubspec.yaml.

Caution

It's useful for Android >= 23 .

Usage

Import

import 'package:system_proxy/system_proxy.dart';

Code

// the proxy value likes:  {port: 8899, host: 127.0.0.1}
Map<String, String> proxy = await SystemProxy.getProxySettings();
if (proxy != null) {
    print('proxy $proxy');
}
Setting Proxy for HttpClient
class ProxiedHttpOverrides extends HttpOverrides {
  String _port;
  String _host;
  ProxiedHttpOverrides(this._host, this._port);

  @override
  HttpClient createHttpClient(SecurityContext context) {
    return super.createHttpClient(context)
      // set proxy
      ..findProxy = (uri) {
        return _host != null ? "PROXY $_host:$_port;" : 'DIRECT';
      };
  }
}

void main() async {
  Map<String, String> proxy = await SystemProxy.getProxySettings();
  if (proxy == null) {
    proxy = {
    'host': null,
    'port': null
    };
  }
  HttpOverrides.global = new ProxiedHttpOverrides(proxy['host'], proxy['port']);
  runApp(MyApp());
}

所属分类

源码仓库

使用此插件的项目