otp_autofill_plus 1.0.1
otp_autofill_plus: ^1.0.1 copied to clipboard
Android implementation of OTP autofill with using User Consent API and Retriever API. Add possibility to receive OTP code from another input.
example/lib/main.dart
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:otp_autofill_example/sample_strategy.dart';
import 'package:otp_autofill_plus/otp_autofill_plus.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final scaffoldKey = GlobalKey();
late OTPTextEditController controller;
late OTPInteractor _otpInteractor;
@override
void initState() {
super.initState();
_initInteractor();
controller = OTPTextEditController(
codeLength: 5,
//ignore: avoid_print
onCodeReceive: (code) => print('Your Application receive code - $code'),
otpInteractor: _otpInteractor,
)..startListenUserConsent(
(code) {
final exp = RegExp(r'(\d{5})');
return exp.stringMatch(code ?? '') ?? '';
},
strategies: [
SampleStrategy(),
],
);
}
Future<void> _initInteractor() async {
_otpInteractor = OTPInteractor();
// You can receive your app signature by using this method.
final appSignature = await _otpInteractor.getAppSignature();
if (kDebugMode) {
print('Your app signature: $appSignature');
}
}
@override
void dispose() {
controller.stopListen();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
key: scaffoldKey,
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(40),
child: TextField(
textAlign: TextAlign.center,
keyboardType: TextInputType.number,
controller: controller,
),
),
),
),
);
}
}