import 'dart:async'; import 'package:flutter/material.dart'; import 'package:myid/enums.dart'; import 'package:myid/myid.dart'; import 'package:myid/myid_config.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({Key? key}) : super(key: key); @override State createState() => _MyAppState(); } class _MyAppState extends State { String? _error; MyIdResult? _result; Future init() async { String? error; MyIdResult? result; try { const clientId = 'client_id'; final myIdResult = await MyIdClient.start( config: MyIdConfig( // PROVIDE CLIENT_ID YOU'VE GOT FROM YOUR BACKEND clientId: clientId, buildMode: MyIdBuildMode.PRODUCTION, ) ); result = myIdResult; } catch (e) { error = e.toString(); result = null; } // If the widget was removed from the tree while the asynchronous platform // message was in flight, we want to discard the reply rather than calling // setState to update our non-existent appearance. if (!mounted) return; setState(() { _error = error; _result = result; }); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('MyID Sample'), ), body: Center( child: Column( children: [ MaterialButton( onPressed: init, child: const Text('Start SDK'), ), Text(_result?.code ?? _error ?? 'Failure'), ], ), ), ), ); } }