pingidsdk 0.0.1 copy "pingidsdk: ^0.0.1" to clipboard
pingidsdk: ^0.0.1 copied to clipboard

outdated

Flutter plugin for PingID SDK

example/lib/main.dart

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

import 'package:pingidsdk/pingidsdk.dart' as ping;

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  StreamSubscription<ping.PairingOptionsRequired> _pairingOptionsRequiredSub;
  StreamSubscription<ping.PairingCompleted> _pairingCompletedSub;
  final ping.PingIDSDK _ping = ping.PingIDSDK.instance;
  final String _username = "user3";

  String _serverPayload = '';
  bool _isTrusted = false;
  

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

  @override
  void dispose() {
    _pairingOptionsRequiredSub.cancel();
    _pairingCompletedSub.cancel();
    super.dispose();
  }

  Future<void> init() async {
    if (!mounted) return;

    _pairingOptionsRequiredSub = _ping.pairingOptionsRequired.listen((args) async {
      await _ping.pairingSelection(_username, ping.TrustLevel.TRUSTED, ping.Action.APPROVE);
    });

    _pairingCompletedSub = _ping.pairingCompleted.listen((args) async {
      bool isTrusted = await _ping.deviceIsTrusted;
      setState(() {
        _isTrusted = isTrusted;
      });
    });

    String payload;
    bool isTrusted = await _ping.deviceIsTrusted;
    if (!isTrusted)
      payload = await _ping.payload;

    print(payload);

    setState(() {
      _isTrusted = isTrusted;
    });
  }

  void _sendServerPayload() async {
    await _ping.sendServerPayload(_serverPayload);
  }

  void _authenticate() async {
    String payload = await _ping.payload;
    print(payload);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
        accentColor: Colors.yellowAccent
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: <Widget>[
              TextField(
                onChanged: (value) => setState(() => _serverPayload = value),
              ),
              SizedBox(
                height: 20,
              ),
              RaisedButton(
                color: Theme.of(context).primaryColor,
                onPressed: _sendServerPayload,
                child: const Text('Send payload'),
              ),
              SizedBox(
                height: 20,
              ),
              RaisedButton(
                color: Theme.of(context).primaryColor,
                onPressed: _isTrusted ? _authenticate : null,
                child: const Text('Authentication Payload'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}