reclaim_sdk 0.0.1
reclaim_sdk: ^0.0.1 copied to clipboard
Reclaim SDK provides a way to let your users import data from other websites into your app in a secure, privacy preserving manner using zero knowledge proofs right in your Flutter Application.
example/lib/main.dart
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_reclaim/flutter_reclaim.dart';
import 'package:flutter_reclaim/types.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Reclaim SDK Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Reclaim SDK Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String data = "";
ProofRequest proofRequest = ProofRequest(
applicationId: '0xFB1A47E54204Ab6e5A0D1484aF0019Fc27120BaC', log: true);
void startVerificationFlow() async {
proofRequest.setAppCallbackUrl('mychat://chat/');
await proofRequest
.buildProofRequest("6e9cba4f-7ed2-41e6-a9cb-c9a2b6c1fe4f");
proofRequest.setSignature(proofRequest.generateSignature(
'0x563190d719eb38397ef3cc5bc5006ea6b8e9515658a67a22543320d58ee94336'));
final verificationRequest = await proofRequest.createVerificationRequest();
final [
requestUrl,
statusUrl
] = [verificationRequest['requestUrl'], verificationRequest['statusUrl']];
logger.i(requestUrl);
logger.i(statusUrl);
final startSessionParam = StartSessionParams(
onSuccessCallback: (proof) => setState(() {
data = jsonEncode(proof.extractedParameterValues);
}),
onFailureCallback: (error) => {
setState(() {
data = 'Error: $error';
})
},
);
await proofRequest.startSession(startSessionParam);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Prove that you have Steam ID By clicking on Verify button:',
),
Text(
data,
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: startVerificationFlow,
tooltip: 'Verify ',
child: const Text('Verify'),
),
);
}
}