flutter - 如何正确收听短信代码颤动
问题描述
我将PinPut包用于我的颤振应用程序,以便用户在从自定义后端发送手机代码后验证他们的手机代码。一切都很完美,但我想要一个自动填充机制,这样他们就不必每次都手动放置它。所以,我尝试切换到Sms Autofill包,但我不喜欢它的输入字段的外观,因为我想要更多的自定义。(无论如何,自动填充对我不起作用)。
现在,我将SMS 接收器包与我首选的 PinPut小部件一起使用。这个想法是我想收听短信代码并将其传递给我的 PinPut 控制器。但遗憾的是,监听器不起作用,因为我的代码实现没有收到消息。
这是我的代码:
String _smsCode = "";
bool isListening = false;
getCode(String sms) {
print("Snskndksdnn");
if (sms != null) {
final intRegex = RegExp(r'\d+', multiLine: true);
final code = intRegex.allMatches(sms).first.group(0);
return code;
}
return "NO SMS";
}
Future<void> onSubmitPhone() async {
///close keyboard
FocusScope.of(context).requestFocus(FocusNode());
errorPhone = _cv.contentValidator(
phone.text.toString().trim(), '[0-9]{10,11}', errorPhone);
if(errorPhone == null){
var _api = SmsRetrieverApi();
setState(() {});
await _api.startListening(onReceived: (smsCode){
_smsCode = getCode(smsCode);
isListening = false;
});
Map<String, String> data = new Map();
data = {
"phoneNumber": phoneUpdate
};
try{
Map<String, dynamic> _res = await authenticationService.sendOTP(data);
if(_res['success'] ==true){
AlertManager.showToast(_res['data']['smsStatus']);
setState(() {
isSendIngOTP = false;
pinId = '${_res['data']['pinId']}';
});
_pageController.nextPage(
duration: Duration(milliseconds: 500),
curve: Curves.ease,
);
}
}
}
}
有什么想法可以得到我想要的结果吗?
解决方案
推荐阅读
- swift - 在 Swift 中请求服务器接收 xmpp 消息
- python - 使用 python、dict 或 list 读取文本文件和格式化数据
- microsoft-teams - Microsoft 团队:Visual Studio 连接器
- jquery - 使用 angularjs-datepicker 将日期添加到表中
- sql-server - 如何重置 SQL Server 表列中的标识?
- r - stringr::str_replace() 在 R 中提取有符号数
- java - 自定义事件 Java
- javascript - 我怎样才能通过 forEach() 做到这一点?
- vb.net - 在 Visual Studio 的调试中未执行代码更改
- database - 如何使用 jsp 和仅使用一张表的数据库创建动态下拉列表?