vpn_sdp 2.0.9
vpn_sdp: ^2.0.9 copied to clipboard
SDP 版本 VPN 接入 Flutter 插件,基于零信任 SDP 安全隧道 SDK 封装,提供 iOS/Android 双平台 VPN 连接管理能力。
example/lib/main.dart
import 'package:dio/dio.dart';
import 'package:ecp_global/ecp_global.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:ecp_net/net.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:vpn_sdp/sdp_vpn_exception.dart';
import 'package:vpn_sdp_example/sdp_demo_page.dart';
void main() {
_initNet();
runApp(const MyApp());
}
const String _dev = "http://135.0.123.110:8700/api";
const String _innerRelease = "https://gzdxoa.gzdx.com.cn:30081/api";
const String _local = "http://135.31.66.50:6602";
const String _zqSdp = "http://135.31.66.73:9000/sdp/api";
///初始化网络配置
void _initNet() {
var convert = NetConvert(codeKeys: ["code"], messageKeys: ['msg'], successFlags: ['200']);
var options = BaseOptions(
baseUrl: _zqSdp,
connectTimeout: const Duration(seconds: 10),
receiveTimeout: const Duration(seconds: 10),
sendTimeout: const Duration(seconds: 10),
contentType: "application/json",
);
NetConfig.instance
..convert = convert
..dynamicHeader = (options, header) async {
header["Device-Type"] = "mobile";
header["XT-token"] = RuntimeUtils.currentUser?.token;
header["Current-Dept"] = RuntimeUtils.currentDepartment?.deptId;
}
..errorHandler = AppErrorHandle()
..baseOptions = options;
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const SdpDemoPage(),
builder: FlutterSmartDialog.init(),
navigatorObservers: [FlutterSmartDialog.observer],
);
}
}
class AppErrorHandle extends NetErrorHandler {
@override
void onError(e) {
if (e is PlatformException) {
SmartDialog.showToast(e.message ?? "插件异常");
return;
}
if (e is SdpVpnException) {
SmartDialog.showToast(e.message ?? "网络异常");
return;
}
super.onError(e);
}
}