asynchronous - 在Flutter中显示应用程序版本,操作系统版本和型号

标签 asynchronous flutter dart future

我正在使用device_info插件在文本小部件中显示应用程序版本,操作系统版本和模型。我做了三个函数,每个函数都返回一个字符串。

//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()}'),
        ],
      )

而不是在“文本”小部件中显示返回的字符串,而是显示“Future的实例”。我在这里做错了什么?

最佳答案

这些是异步功能,需要等待。我建议使用诸如FutureBuilder之类的东西来呈现这些属性。

FutureBuilder<String>(
            future: _getDeviceModel(),
            builder: (BuildContext context,
                AsyncSnapshot<String> snapshot) {
              if (!snapshot.hasData) {
                return CircularProgressIndicator();
              }

              return Text('Device Model: ${snapshot.data}');
          })

关于asynchronous - 在Flutter中显示应用程序版本,操作系统版本和型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044882/

相关文章:

javascript - 使用Vue.js可视化快速排序编程算法(无法处理Promises)

android - 参数类型 'Object?' 不能分配给参数类型 'int'

flutter 错误未定义类 'RenderContext'

android - 库 Dart 包的类路径损坏

reactjs - Flutter (Dart) 中的 RSA 加密

c# - 为什么我的 IOCompetionCallback 从未在我的 IO 完成端口上执行?

python - 在不导入 asyncio 包的情况下启动异步功能

jquery - Grails 中长时间运行的异步调用和服务器推送

flutter - 堆栈内小部件的颜色始终稍微透明

slider - BottomNavigationBar 中的 Flutter Slider 不更新