最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Flutter获取并在widget组件中显示异步方法的返回值

Flutter 太平洋学习网 浏览 评论

在Flutter中,“Future”关键字修饰的方法即为异步方法,如果想要让它的返回值在widget组件中显示,则比较复杂,这里简单介绍一下Flutter异步方法的简单使用,假如有一个如下这样异步获取手机设备型号的方法:

Future<String> getPhoneModel() async {
  try {
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    String modelName;
    if (Platform.isAndroid) {
      AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
      return Future.value(androidInfo.model);
    } else if (Platform.isIOS) {
      IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
      return Future.value(iosInfo.model);
    }
    return modelName;
  } on PlatformException {
    print("=================");
  }
  return null;
}

因为Future是一个异步方法,所以我们在组件中不可以直接这样获取,如下所示是错误的:

Text("设备号:"+getPhoneModel());

它的返回值则是一个字符串,并不能得到手机设备的型号,返回结果如下:

设备号:Instance of 'Future<String>'

那么我们如何获取并在widget组件中显示异步方法的返回值呢?可以使用“FutureBuilder”组件对象来显示异步数据,代码如下:

body: Center(
child: FutureBuilder(
  future: getPhoneModel(),
  builder: (BuildContext context, AsyncSnapshot<String> snapshot){
	return Text("设备号:"+snapshot.data);
  },
),
),

此时Flutter就可以获取Future修饰的异步方法返回值了,输出的字符串值则为:

设备号:TAS-AN00

说明:

在FutureBuilder中,future属性则为前面定义的异步方法,而builder里面的“AsyncSnapshot<String>”泛型String则为上面“getPhoneModel()”方法的返回类型,可以使用“snapshot.data”来获取此值。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/flutter/976.html

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论