Flutter 如何在flatter中获取手机号码
我正在使用“手机号码(版本-1.0.3)”插件在Flatter应用程序中获取手机号码,我在原始设备中运行,但无法获取手机号码。除了错误,我可以将手机号码获取为空以及屏幕截图中显示的其他sim卡详细信息 帮我解决这个问题,我刚刚复制粘贴了插件给出的示例,即代码 上面写着: 注意:如果sim卡上没有手机号码,则不会返回te电话号码Flutter 如何在flatter中获取手机号码,flutter,flutter-layout,flutter-dependencies,dart-pub,Flutter,Flutter Layout,Flutter Dependencies,Dart Pub,我正在使用“手机号码(版本-1.0.3)”插件在Flatter应用程序中获取手机号码,我在原始设备中运行,但无法获取手机号码。除了错误,我可以将手机号码获取为空以及屏幕截图中显示的其他sim卡详细信息 帮我解决这个问题,我刚刚复制粘贴了插件给出的示例,即代码 上面写着: 注意:如果sim卡上没有手机号码,则不会返回te电话号码 我认为手机号码在SIM卡上不存在如果SIM卡不是原始的(即更换的)如果手机号码没有存储在SIM卡上(也称为空),那么你就无法从其他任何地方获得它,在这种情况下,您可能希望
我认为手机号码在SIM卡上不存在如果SIM卡不是原始的(即更换的)如果手机号码没有存储在SIM卡上(也称为空),那么你就无法从其他任何地方获得它,在这种情况下,您可能希望将用户转发到另一个页面,在该页面中,用户可以使用TextField键入电话号码,然后将其存储在某个位置使用软件包获取手机号码和其他详细信息。比如说
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mobile_number/mobile_number.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _mobileNumber = '';
List<SimCard> _simCard = <SimCard>[];
@override
void initState() {
super.initState();
MobileNumber.listenPhonePermission((isPermissionGranted) {
if (isPermissionGranted) {
initMobileNumberState();
} else {}
});
initMobileNumberState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initMobileNumberState() async {
if (!await MobileNumber.hasPhonePermission) {
await MobileNumber.requestPhonePermission;
return;
}
String mobileNumber = '';
// Platform messages may fail, so we use a try/catch PlatformException.
try {
mobileNumber = (await MobileNumber.mobileNumber)!;
_simCard = (await MobileNumber.getSimCards)!;
} on PlatformException catch (e) {
debugPrint("Failed to get mobile number because of '${e.message}'");
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_mobileNumber = mobileNumber;
});
}
Widget fillCards() {
List<Widget> widgets = _simCard
.map((SimCard sim) => Text(
'Sim Card Number: (${sim.countryPhonePrefix}) - ${sim.number}\nCarrier Name: ${sim.carrierName}\nCountry Iso: ${sim.countryIso}\nDisplay Name: ${sim.displayName}\nSim Slot Index: ${sim.slotIndex}\n\n'))
.toList();
return Column(children: widgets);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
children: <Widget>[
Text('Running on: $_mobileNumber\n'),
fillCards()
],
),
),
),
);
}
}
导入'dart:async';
进口“包装:颤振/基础.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“包装:手机号码/手机号码.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
字符串_mobileNumber='';
列表_simCard=[];
@凌驾
void initState(){
super.initState();
MobileNumber.listenPhonePermission((已授予许可){
如果(已授予许可){
initMobileNumberState();
}else{}
});
initMobileNumberState();
}
//平台消息是异步的,所以我们用异步方法初始化。
Future initMobileEnumberState()异步{
如果(!wait MobileNumber.hasPhonePermission){
等待MobileNumber.requestPhonePermission;
返回;
}
字符串mobileNumber='';
//平台消息可能会失败,因此我们使用try/catch PlatformException。
试一试{
mobileNumber=(等待mobileNumber.mobileNumber)!;
_simCard=(等待MobileNumber.getSimCards)!;
}平台上异常捕获(e){
debugPrint(“由于“${e.message}”而无法获取手机号码”);
}
//如果在异步平台运行时从树中删除了小部件
//消息正在传输中,我们希望放弃回复而不是呼叫
//设置state以更新我们不存在的外观。
如果(!已安装)返回;
设置状态(){
_mobileNumber=mobileNumber;
});
}
小部件填充卡(){
列表小部件=\u simCard
.map((sim卡)=>文本(
'Sim卡号:(${Sim.countryPhonePrefix})-${Sim.Number}\n载波名称:${Sim.carrierName}\n国家Iso:${Sim.countryIso}\n显示名称:${Sim.displayName}\nSim插槽索引:${Sim.slotIndex}\n\n'))
.toList();
返回列(子项:小部件);
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text(“插件示例应用程序”),
),
正文:中(
子:列(
儿童:[
Text($\u mobileNumber\n)上运行,
fillCards()
],
),
),
),
);
}
}
我如何解决这个sim卡问题?如果没有插件,我可能会遇到一些问题,因为oppo手机无法使用这个软件包。