【发布时间】:2021-02-25 04:58:13
【问题描述】:
我使用 sms_autofill 插件来自动检测在移动设备上收到的 OTP 并将其输入给定的 PinFieldAutoFill,根据 https://pub.dev/packages/sms_autofill#-readme-tab- 我正在使用 @ 987654322@ 发出我的 API 请求之前的函数,当请求有 200 个状态码时,我将其导航到另一个页面,在init 中,我正在收听使用await SmsAutoFill().listenForCode; 收到的 OTP SMS 我想可能是什么时候该页面已初始化,它不会再次收听任何短信,所以我也添加了一个 定时器,但它仍然没有收到任何内容。
依赖 - sms_autofill: ^1.2.6
代码:第1页
Center(
child: RaisedButton(
child: Text('Register'),
onPressed: () async {
await SmsAutoFill().listenForCode;
final signCode = await SmsAutoFill().getAppSignature;
print(signCode);
//Http request code
},
),
),
代码:第2页
String appSignature;
String otpCode;
Timer timer;
@override
void codeUpdated() {
setState(() {
otpCode = code;
});
}
@override
void initState() {
super.initState();
listenOTP();
// timer = Timer.periodic(Duration(seconds: 10), (Timer t){
// print('OTP Listening');
// listenOTP();
// });
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Code Received: $otpCode",
),
Container(
padding: EdgeInsets.symmetric(horizontal: 50),
child: PinFieldAutoFill(
codeLength: 6,
onCodeChanged: (val) {
print(val);
},
),
)
],
),
),
);
}
void listenOTP() async {
print('listen for code');
await SmsAutoFill().listenForCode;
}
【问题讨论】: