openconnect_flutter 1.2.0 copy "openconnect_flutter: ^1.2.0" to clipboard
openconnect_flutter: ^1.2.0 copied to clipboard

PlatformiOS

A Flutter plugin for managing OpenConnect VPN connections

example/lib/main.dart

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

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

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

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

class _MyAppState extends State<MyApp> {
  final openconnectFlutterPlugin = OpenconnectFlutter();
  var connectionStatus = "disconnected";

  TextEditingController hostNameController = TextEditingController();
  TextEditingController sslPortController = TextEditingController();
  TextEditingController userNameController = TextEditingController();
  TextEditingController passController = TextEditingController();

  @override
  void initState() {
    super.initState();
    init();
    setupVpn();
    onStatusChanged();
  }

  init() async {
    connectionStatus =
        await openconnectFlutterPlugin.lastStatus() ?? 'disconnected';
    setState(() {});
  }

  setupVpn() async {
    OpenconnectServer server = OpenconnectServer(
      host: hostNameController.text,
      port: int.parse(
          sslPortController.text.isEmpty ? '443' : sslPortController.text),
      username: userNameController.text,
      password: passController.text,
      iosConfiguration: OpenconnectIOSConfiguration(
        enableMSCHAP2: true,
        enableCHAP: false,
        enablePAP: false,
        enableTLS: false,
      ),
    );
    await openconnectFlutterPlugin.setup(server: server);
  }

  onStatusChanged() {
    openconnectFlutterPlugin.onStatusChanged(
      onConnectedResult: () {
        setState(() {
          connectionStatus = "connected";
        });
      },
      onConnectingResult: () {
        setState(() {
          connectionStatus = "connecting";
        });
      },
      onDisconnectedResult: () {
        setState(() {
          connectionStatus = "disconnected";
        });
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter openconnect vpn example app'),
        ),
        body: Center(
            child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  Text("connectionStatus : $connectionStatus"),
                ],
              ),
              TextField(
                controller: hostNameController,
                decoration: const InputDecoration(hintText: "host name"),
              ),
              TextField(
                controller: sslPortController,
                decoration: const InputDecoration(hintText: "ssl port"),
              ),
              TextField(
                controller: userNameController,
                decoration: const InputDecoration(hintText: "user name"),
              ),
              TextField(
                controller: passController,
                decoration: const InputDecoration(hintText: "password"),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: [
                  ElevatedButton(
                      onPressed: () async {
                        await setupVpn();
                        try {
                          await openconnectFlutterPlugin.connect();
                        } catch (e) {
                          debugPrint(e.toString());
                        }
                      },
                      child: const Text("Connect")),
                  ElevatedButton(
                      onPressed: () async {
                        await openconnectFlutterPlugin.disconnect();
                      },
                      child: const Text("Disconnect"))
                ],
              ),
            ],
          ),
        )),
      ),
    );
  }
}
2
likes
150
points
26
downloads

Publisher

verified publishernaviddev.info

Weekly Downloads

A Flutter plugin for managing OpenConnect VPN connections

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on openconnect_flutter