Flutter网络代理配置插件flutter_proxy_native的使用

Flutter网络代理配置插件flutter_proxy_native的使用

一个 Flutter 插件,用于自动获取系统的代理(Proxy)设置,并方便地应用于 Dio 网络请求库。

功能

  • 自动检测系统代理: 自动获取 iOS 、 Android 或 MacOS 设备上的系统代理配置。
  • Dio 集成: 简化 Dio 网络请求库的代理设置流程。

安装

要开始使用 flutter_proxy_native,请将以下依赖添加到你的 pubspec.yaml 文件中:

dependencies:
  flutter_proxy_native: ^最新版本

然后运行以下命令来安装依赖:

flutter pub get

使用方法

在你的 Dart 代码中,首先导入插件:

import 'package:flutter_proxy_native/flutter_proxy_native.dart';

然后,使用 flutter_proxy_native 获取系统代理,并设置给 Dio:

var proxy = await FlutterProxyNative.getSystemProxy();
Dio dio = Dio();
dio.options = dio.options.copyWith(
  httpClientAdapter: ProxyHttpClientAdapter(proxy: proxy),
);

示例

查看 example 文件夹获取更多关于如何在你的项目中使用 flutter_proxy_native 的示例。

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:flutter_proxy_native/flutter_proxy_native.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';
  String _systemProxy = '未知';
  final _flutterProxyPlugin = FlutterProxyNative();

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    String platformVersion;
    String systemProxy;
    // 平台消息可能会失败,所以我们使用 try/catch 来处理 PlatformException。
    // 我们还处理了消息可能返回 null 的情况。
    try {
      platformVersion =
          await _flutterProxyPlugin.getPlatformVersion() ?? '未知平台版本';
      systemProxy = await _flutterProxyPlugin.getSystemProxy() ?? "未知系统代理";
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
      systemProxy = '获取系统代理失败。';
    }

    // 如果小部件从树中被移除,而异步平台消息正在飞行中,我们希望丢弃回复而不是调用 setState 来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
      _systemProxy = systemProxy;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行于: $_systemProxy\n'),
        ),
      ),
    );
  }
}

更多关于Flutter网络代理配置插件flutter_proxy_native的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络代理配置插件flutter_proxy_native的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_proxy_native 是一个用于配置 Flutter 应用程序网络代理的插件。它允许你在 Android 和 iOS 平台上设置代理,以便在开发或测试过程中通过代理服务器进行网络请求。以下是如何使用 flutter_proxy_native 插件的步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 flutter_proxy_native 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_proxy_native: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 代码中导入 flutter_proxy_native 插件:

import 'package:flutter_proxy_native/flutter_proxy_native.dart';

3. 配置代理

你可以使用 FlutterProxyNative 类来配置代理。以下是一个简单的示例:

void configureProxy() async {
  try {
    await FlutterProxyNative.setProxy(
      host: 'your.proxy.host',
      port: 8080,
      bypass: 'localhost,127.0.0.1', // 可选,绕过代理的地址
    );
    print('Proxy configured successfully');
  } catch (e) {
    print('Failed to configure proxy: $e');
  }
}

4. 清除代理

如果你想清除当前配置的代理,可以调用 clearProxy 方法:

void clearProxy() async {
  try {
    await FlutterProxyNative.clearProxy();
    print('Proxy cleared successfully');
  } catch (e) {
    print('Failed to clear proxy: $e');
  }
}

5. 检查当前代理设置

你还可以检查当前是否配置了代理:

void checkProxy() async {
  try {
    final proxySettings = await FlutterProxyNative.getProxySettings();
    if (proxySettings != null) {
      print('Proxy is configured: ${proxySettings.host}:${proxySettings.port}');
    } else {
      print('No proxy is configured');
    }
  } catch (e) {
    print('Failed to check proxy: $e');
  }
}
回到顶部