wipter_sdk 1.8.1 copy "wipter_sdk: ^1.8.1" to clipboard
wipter_sdk: ^1.8.1 copied to clipboard

A Flutter plugin for the Wipter SDK

example/lib/main.dart

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

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

import 'dart:io';
import 'package:permission_handler/permission_handler.dart';
import 'package:wipter_sdk/wipter_sdk_model.dart';
import 'package:wipter_sdk/wipter_sdk_state.dart';
import 'package:wipter_sdk/wipter_sdk_transfer_rate.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MainScreen(),
    );
  }
}

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

  @override
  State<MainScreen> createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
  SDKState _sdkState = SDKState.uninitialized;
  SDKTransferRate _sdkTransferRate = SDKTransferRate(upstreamRate: 0.0, downstreamRate: 0.0);
  String? _deviceId = "Not available";
  String? _sessionId = "Not available";

  @override
  void initState() {
    super.initState();
    _initializeSDK();
    _requestNotificationPermission();
  }

  Future<void> _initializeSDK() async {
    WipterSDK.stateStream.listen((SDKState state) async {
      setState(() {
        _sdkState = state;
      });

      if (state == SDKState.running) {
        // Ask SessionID when running
        var sessionId = await WipterSDK.getSessionId();
        setState(() {
          _sessionId = sessionId;
        });
      }
    }, onError: (error) {
      // Handle error
    });

    WipterSDK.transferRateStream.listen((SDKTransferRate rate) async {
      setState(() {
        _sdkTransferRate = rate;
      });
    });

    var clientId = "<< use your client Id >>";
    var clientSecret = "<< use your secret >>";
    WipterSDK.setupWithClientCredentials(clientId: clientId, clientSecret: clientSecret);

    WipterSDK.setBackgroundNotificationProperties(
      title: "Title of notification",
      text: "Text of notification"
    );

    // Request Device ID After connection
    var deviceId = await WipterSDK.getDeviceId();
    setState(() {
      _deviceId = deviceId;
    });

    final state = await WipterSDK.getState();
    debugPrint("Current State of SDK is: $state");
  }

  Future<void> _requestNotificationPermission() async {
    if (Platform.isAndroid) {
      var status = await Permission.notification.status;
      if (!status.isGranted) {
        await Permission.notification.request();
      }
    }
  }

  Future<void> _copyToClipboard(BuildContext context, String label, String text) async {
    final ScaffoldMessengerState messenger = ScaffoldMessenger.of(context);
    final data = ClipboardData(text: text);
    await Clipboard.setData(data);

    messenger.showSnackBar(
      SnackBar(content: Text('$label copied to clipboard')),
    );
  }

  Future<void> _copyLogToClipboard(BuildContext context) async {
    final ScaffoldMessengerState messenger = ScaffoldMessenger.of(context);
    final logFile = File('${Directory.systemTemp.path}/m_log.txt');
    String logContent = "Log file does not exist";

    if (await logFile.exists()) {
      logContent = await logFile.readAsString();
    }

    messenger.showSnackBar(
      const SnackBar(content: Text('Log File copied to clipboard')),
    );
    await Clipboard.setData(ClipboardData(text: logContent));
  }

  Future<void> _startSDK(SDKServiceMode mode) async {
    await WipterSDK.start(mode: mode);
  }

  Future<void> _stopSDK() async {
    await WipterSDK.stop();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Wipter SDK Sample"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              Text("Device Id: $_deviceId"),
              Text("Session Id: $_sessionId"),
              if (_deviceId != null && _deviceId!.isNotEmpty)
                ElevatedButton(
                  onPressed: () => _copyToClipboard(context, "DeviceID", _deviceId!),
                  child: const Text("Copy DeviceID to clipboard"),
                ),
              if (_sessionId != null && _sessionId!.isNotEmpty)
                ElevatedButton(
                  onPressed: () => _copyToClipboard(context, "SessionID", _sessionId!),
                  child: const Text("Copy SessionID to clipboard"),
                ),
              const Divider(),
              Text("$_sdkTransferRate"),
              const Divider(),
              ElevatedButton(
                onPressed: () => _copyLogToClipboard(context),
                child: const Text("Copy log file content to clipboard"),
              ),
              const Divider(),
              Text("SDK State: ${_sdkState.toReadableString()}"),
              const SizedBox(height: 16),
              ElevatedButton(
                onPressed: () => _startSDK(SDKServiceMode.foregroundOnly),
                child: const Text("Start SDK (Foreground Only)"),
              ),
              const SizedBox(height: 8),
              ElevatedButton(
                onPressed: () => _startSDK(SDKServiceMode.always),
                child: const Text("Start SDK (Always)"),
              ),
              const SizedBox(height: 8),
              ElevatedButton(
                onPressed: _stopSDK,
                child: const Text("Stop SDK"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
120
points
76
downloads

Publisher

verified publisherwipter.com

Weekly Downloads

A Flutter plugin for the Wipter SDK

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

flutter, permission_handler, plugin_platform_interface

More

Packages that depend on wipter_sdk