shernova 1.0.1
shernova: ^1.0.1 copied to clipboard
Shernova Phone Verification API — core Flutter SDK (headless).
shernova #
Headless Flutter SDK for the Shernova Phone Verification API.
Quick Start (new Flutter app) #
flutter create my_app
cd my_app
# 1. SDK + optional UI
dart pub add shernova shernova_ui
# 2. Setup CLI (generates config, reads Android app id + SHA256)
dart pub add --dev shernova_cli
dart run shernova_cli setup --pk pk_test_YOUR_KEY --app-id YOUR_APP_UUID
# 3. Register Android package + SHA256 in Shernova dashboard (values printed by setup)
Minimal UI integration #
lib/main.dart:
import 'package:flutter/material.dart';
import 'package:shernova/shernova.dart';
import 'package:shernova_ui/shernova_ui.dart';
import 'shernova_config.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Shernova.init(shernovaConfig);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Verify phone')),
body: Center(
child: Builder(
builder: (context) => FilledButton(
onPressed: () async {
await verifyPhone(
context: context,
phoneNumber: '+201012345678',
);
},
child: const Text('Verify'),
),
),
),
),
);
}
}
Headless (no UI package) #
import 'package:shernova/shernova.dart';
import 'shernova_config.dart';
await Shernova.init(shernovaConfig);
final session = await Shernova.verify(phoneNumber: '+201012345678');
await for (final update in Shernova.watch(session.id)) {
if (update.status == 'verified') {
final receipt = await Shernova.getReceipt(session.id);
break;
}
}
Sandbox vs Live #
| Key prefix | Environment |
|---|---|
pk_test_ |
Sandbox — use /v1/test/simulate-ring to complete sessions |
pk_live_ |
Production |
Packages #
| Package | Purpose |
|---|---|
shernova |
Core headless SDK (this package) |
shernova_ui |
Optional verification screens |
shernova_cli |
Project setup CLI |
shernova_android_helpers |
Optional Android auto-return |
Register your Android package name + SHA256 in the Shernova dashboard before calling Shernova.init().