flutter_vpn_service 1.1.0 copy "flutter_vpn_service: ^1.1.0" to clipboard
flutter_vpn_service: ^1.1.0 copied to clipboard

PlatformAndroid

A Flutter plugin for interacting with Android's VPNService.

flutter_vpn_service #

A Flutter plugin for managing VPN services on Android. This plugin allows you to programmatically establish and configure VPN connections, protect sockets, and handle network routing. It is primarily designed to be used within Flutter apps that need VPN capabilities.

Features #

  • Prepare and establish a VPN connection.
  • Protect specific sockets from the VPN.
  • Set session information for the VPN.
  • Add IP addresses and routes to the VPN configuration.

Installation #

1. Add the dependency to your pubspec.yaml: #

dependencies:
  flutter_vpn_service:
    git:
      url: https://github.com/shafiquecbl/flutter_vpn_service.git

Alternatively, if you have published the package on pub.dev, you can add it like this: #

dependencies:
  flutter_vpn_service: ^<latest_version>

2. Install the dependencies: #

flutter pub get

3. Platform-Specific Configuration: #

Android: The plugin currently supports Android and does not require any special configurations beyond the AndroidManifest.xml permissions above.

Usage #

Here’s a basic guide on how to use the flutter_vpn_service plugin:

1. Prepare VPN #

Before you can start using the VPN, you need to prepare it.

import 'package:flutter_vpn_service/flutter_vpn_service.dart';

Future<void> prepareVpn() async {
  bool isPrepared = await FlutterVpnService.prepare();
  if (isPrepared) {
    print("VPN is prepared and ready to use.");
  } else {
    print("VPN is already prepared.");
  }
}

2. Protect a Socket #

You can protect specific sockets to use the VPN.

Future<void> protectSocket(int socket) async {
  bool success = await FlutterVpnService.protectSocket(socket);
  if (success) {
    print("Socket is now protected by VPN.");
  } else {
    print("Failed to protect the socket.");
  }
}

3. Set Session Name #

Set a session name for the VPN connection.

Future<void> setSession(String session) async {
  bool success = await FlutterVpnService.setSession(session);
  if (success) {
    print("Session set to $session.");
  } else {
    print("Failed to set session.");
  }
}

4. Add Address #

Add an IP address and its associated prefix length to the VPN configuration.

Future<void> addAddress(String address, int prefixLength) async {
  bool success = await FlutterVpnService.addAddress(address, prefixLength);
  if (success) {
    print("Address $address added with prefix length $prefixLength.");
  } else {
    print("Failed to add address.");
  }
}

5. Establish VPN #

Finally, establish the VPN connection.

Future<void> establishVpn() async {
  bool success = await FlutterVpnService.establishVpn();
  if (success) {
    print("VPN connection established.");
  } else {
    print("Failed to establish VPN connection.");
  }
}

Example #

Here is a complete example of how you can use the flutter_vpn_service plugin in your app:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter VPN Service',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter VPN Service Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              await FlutterVpnService.prepare();
              await FlutterVpnService.setSession("My VPN Session");
              await FlutterVpnService.addAddress("192.168.1.1", 32);
              await FlutterVpnService.establishVpn();
            },
            child: Text('Start VPN'),
          ),
        ),
      ),
    );
  }
}

Testing: This plugin is designed to work on Android. Make sure to test it on a physical device rather than an emulator, as VPN functionality may not work properly on an emulator.

Contributing #

Contributions are welcome! Please feel free to open issues, submit pull requests, or suggest improvements.

1- Fork the repository. 2- Create your branch (git checkout -b feature-branch). 3- Commit your changes (git commit -am 'Add new feature'). 4- Push to the branch (git push origin feature-branch). 5- Create a new Pull Request.

2
likes
140
points
313
downloads

Publisher

verified publisherwisecodex.com

Weekly Downloads

A Flutter plugin for interacting with Android's VPNService.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_vpn_service