device_info_plus未显示设备数据| Flutter



我试图在模态底表上显示设备信息(使用device_info_plus包),但是模态底表没有给出有关设备的任何细节。

我猜在模态底部表单的initState()的StatefulWidget根本不运行。

怎么走?

这是我的device_details。飞镖文件

class DeviceDetails extends StatefulWidget {
@override
_DeviceDetailsState createState() => _DeviceDetailsState();
}
class _DeviceDetailsState extends State<DeviceDetails> {
static final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
Map<String, dynamic> _deviceData = <String, dynamic>{};
final TextStyle _devicePropertyName = TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
fontSize: 14.sp,
);
final TextStyle _devicePropertyValue = TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 14.sp,
);
@override
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
var deviceData = <String, dynamic>{};
try {
if (Platform.isAndroid) {
deviceData = _readAndroidBuildData(await deviceInfoPlugin.androidInfo);
}
} on PlatformException {
deviceData = <String, dynamic>{
'Error:': 'Failed to get platform version.'
};
}
if (!mounted) return;
setState(() {
_deviceData = deviceData;
});
}
Map<String, dynamic> _readAndroidBuildData(AndroidDeviceInfo build) {
return <String, dynamic>{
'version.securityPatch': build.version.securityPatch,
'version.sdkInt': build.version.sdkInt,
'version.release': build.version.release,
'version.previewSdkInt': build.version.previewSdkInt,
'version.incremental': build.version.incremental,
'version.codename': build.version.codename,
'version.baseOS': build.version.baseOS,
'board': build.board,
'bootloader': build.bootloader,
'brand': build.brand,
'device': build.device,
'display': build.display,
'fingerprint': build.fingerprint,
'hardware': build.hardware,
'host': build.host,
'id': build.id,
'manufacturer': build.manufacturer,
'model': build.model,
'product': build.product,
'supported32BitAbis': build.supported32BitAbis,
'supported64BitAbis': build.supported64BitAbis,
'supportedAbis': build.supportedAbis,
'tags': build.tags,
'type': build.type,
'isPhysicalDevice': build.isPhysicalDevice,
'androidId': build.androidId,
'systemFeatures': build.systemFeatures,
};
}
@override
Widget build(BuildContext context) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Brand :',
style: _devicePropertyName,
),
Text(
'product :',
style: _devicePropertyName,
),
Text(
'Model :',
style: _devicePropertyName,
),
Text(
'Manufacturer :',
style: _devicePropertyName,
),
Text(
'Id :',
style: _devicePropertyName,
),
Text(
'Android Id :',
style: _devicePropertyName,
),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${_deviceData['brand']}',
style: _devicePropertyValue,
),
Text(
'${_deviceData['product']}',
style: _devicePropertyValue,
),
Text(
'${_deviceData['model']}',
style: _devicePropertyValue,
),
Text(
'${_deviceData['manufacturer']}',
style: _devicePropertyValue,
),
Text(
'${_deviceData['id']}',
style: _devicePropertyValue,
),
Text(
'${_deviceData['androidId']}',
style: _devicePropertyValue,
),
],
),
],
),
],
),
);
}
}

我想在模态底部表单中显示上述细节。我也不想合并这个文件与文件(屏幕),在那里我想显示它。蒂雅:)

我认为一种方法是->

假设你有一个手势检测器在它的on tap方法中你输入->

  1. 先显示加载器的底部模态表
showModalBottomSheet(
context: context,
builder: (context) {
return SafeArea(
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: 10),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CircularProgressIndicator()
],
),
),
);
});
  1. 然后进行异步调用
  2. 并将其存储在一些变量中。然后

Navigator.pop(context);
  1. 这将弹出第一个模态表
  2. 然后打开另一个模式表与所有的数据。

最新更新