在 Flutter 中显示应用程序版本、OS 版本和型号
Displaying app version, OS version and model in Flutter
我正在使用 device_info 插件在文本小部件中显示应用程序版本、OS 版本和模型。我创建了三个函数,每个函数 return 一个字符串。
//OS version
Future<String> _getVersionInfo() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.version.release.toString();
}
//app version
Future<String> _getPackageInfo() async {
PackageInfo _packageInfo = await PackageInfo.fromPlatform();
return _packageInfo.version.toString();
}
Future<String> _getDeviceModel() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.model.toString();
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
return iosInfo.model.toString();
} else {
return ('Error retreiving device model');
}
}
然后我将函数传递给文本Widget。
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('App Version: ${_getPackageInfo()}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Device Model: ${_getDeviceModel()}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('OS Version: ${_getVersionInfo()}'),
],
)
它不会在文本小部件中显示 returned 字符串,而是显示“'Future' 的实例”。我在这里做错了什么?
这些是异步函数,需要等待。我建议使用 FutureBuilder 之类的东西来呈现这些属性。
FutureBuilder<String>(
future: _getDeviceModel(),
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Device Model: ${snapshot.data}');
})
我正在使用 device_info 插件在文本小部件中显示应用程序版本、OS 版本和模型。我创建了三个函数,每个函数 return 一个字符串。
//OS version
Future<String> _getVersionInfo() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.version.release.toString();
}
//app version
Future<String> _getPackageInfo() async {
PackageInfo _packageInfo = await PackageInfo.fromPlatform();
return _packageInfo.version.toString();
}
Future<String> _getDeviceModel() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.model.toString();
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
return iosInfo.model.toString();
} else {
return ('Error retreiving device model');
}
}
然后我将函数传递给文本Widget。
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('App Version: ${_getPackageInfo()}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Device Model: ${_getDeviceModel()}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('OS Version: ${_getVersionInfo()}'),
],
)
它不会在文本小部件中显示 returned 字符串,而是显示“'Future' 的实例”。我在这里做错了什么?
这些是异步函数,需要等待。我建议使用 FutureBuilder 之类的东西来呈现这些属性。
FutureBuilder<String>(
future: _getDeviceModel(),
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Device Model: ${snapshot.data}');
})