Package selection guidance compiled from public package information, community data, and project usage.
flutter_v2ray is a Flutter plugin enabling V2Ray connectivity on Android and iOS devices, supporting both VPN mode and proxy-only configurations. It allows developers to integrate secure, customizable network routing into their apps, facilitating access to restricted content or private network services. The plugin provides a straightforward interface for establishing and managing V2Ray connections, leveraging native platform capabilities for reliable performance. It's particularly useful in applications requiring advanced networking features with strong privacy controls.
Use cases
Secure app-to-server communication
Bypassing regional content restrictions
Building privacy-focused applications
Integrating custom proxy configurations
Enabling encrypted network tunnels
Key features
Supports both VPN mode and proxy-only connection types
Cross-platform compatibility (Android & iOS)
Native integration for stable performance
Simple API for connection management
Configurable via V2Ray JSON settings
Suitable for
Developers building secure communication apps
Apps requiring bypass of network restrictions
Privacy-oriented mobile applications
Network tool integrations
Custom proxy solutions
Considerations
Requires appropriate system permissions on Android and iOS
May need additional configuration for complex V2Ray setups
Potential app store review challenges due to VPN functionality
Depends on external V2Ray binaries for some operations
Not suitable for basic HTTP requests without advanced setup
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
import'package:flutter_v2ray/flutter_v2ray.dart';
// v2ray share link like vmess://, vless://, ...String link = "link_here";
V2RayURL parser = FlutterV2ray.parseFromURL(link);
// Remark of the v2rayprint(parser.remark);
// generate full v2ray configuration (json)print(parser.getFullConfiguration());
Edit Configuration
// Change v2ray listening port
parser.inbound['port'] = 10890;
// Change v2ray listening host
parser.inbound['listen'] = '0.0.0.0';
// Change v2ray log level
parser.log['loglevel'] = 'info';
// Change v2ray dns
parser.dns = {
"servers": ["1.1.1.1"]
};
// and ...// generate configuration with new settings
parser.getFullConfiguration()
Making V2Ray connection
import'package:flutter_v2ray/flutter_v2ray.dart';
finalFlutterV2ray flutterV2ray = FlutterV2ray(
onStatusChanged: (status) {
// do something
},
);
// You must initialize V2Ray before using it.await flutterV2ray.initializeV2Ray();
// v2ray share link like vmess://, vless://, ...String link = "link_here";
V2RayURL parser = FlutterV2ray.parseFromURL(link);
// Get Server Delayprint('${flutterV2ray.getServerDelay(config: parser.getFullConfiguration())}ms');
// Permission is not required if you using proxy onlyif (await flutterV2ray.requestPermission()){
flutterV2ray.startV2Ray(
remark: parser.remark,
// The use of parser.getFullConfiguration() is not mandatory,// and you can enter the desired V2Ray configuration in JSON format
config: parser.getFullConfiguration(),
blockedApps: null,
bypassSubnets: null,
proxyOnly: false,
);
}
// Disconnect
flutterV2ray.stopV2Ray();
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
}
}
And replace it with the following configuration info:
splits {
abi {
enable true
reset()
//noinspection ChromeOsAbiSupport
include "x86_64", "armeabi-v7a", "arm64-v8a"
universalApk true
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
ndk {
//noinspection ChromeOsAbiSupport
abiFilters "x86_64", "armeabi-v7a", "arm64-v8a"
debugSymbolLevel 'FULL'
}
}
}