,flutter,dart"/>

首页 > 解决方案 > 当我调用一个函数“'Future”时,我在颤动中遇到了这个问题'不能分配给参数类型'String'"

问题描述

我对 Dart 中的变量有这个问题,我想从我的函数中读取字符串值,read()但我收到了这个错误:

参数类型“Future”不能分配给参数类型“String”

这是我的功能代码:

read() async {
  final prefs = await SharedPreferences.getInstance();
  String key = 'Code_Abo';
  String value = prefs.get(key ) ?? 0;
  // String rr = value.toString();
  //print(value.toString());
  return(value);
}

在这里我想使用返回的值(作为字符串):

QrImage(
  data: read(),
  version: QrVersions.auto,
  size: 250.0,
  padding: EdgeInsets.only(left: 75.0, right: 75.0),
  // embeddedImage: AssetImage('assets/logo.png'),
),

提前谢谢你...

标签: flutterdart

解决方案


read返回一个未来,如果你想使用它返回的字符串值,你需要等待未来完成。如果要在小部件中使用它,请使用FutureBuilder

FutureBuilder<String>(
  future: read(),
  builder: (_, snapshot) {
    if (!snapshot.hasData) {
      // Return something to show the future hasn't completed yet
      return CircularProgressIndicator();
    }

    return QrImage(
        data: snapshot.data,
        version: QrVersions.auto,
        size: 250.0,
        padding: EdgeInsets.only(left: 75.0, right: 75.0),
       // embeddedImage: AssetImage('assets/logo.png'),
    );
  },
),

推荐阅读