如何在flutter中的异步函数上返回值?

时间:2019-04-08 05:35:03

标签: dart flutter

这是我的代码

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getActiveSheet();

  sheet1.getRange(1, 1).setValue(10);
  sheet1.getRange(2, 2).setFormulaR1C1("=R[-1]C[-1] + 15");
}

打印时,我在调试控制台上收到了此消息

SharedPreferences sharedPreferences;

  token() async {
    sharedPreferences = await SharedPreferences.getInstance();
    return "Lorem ipsum dolor";
  }

如何获取“ lorem ipsum ...”字符串?非常感谢

3 个答案:

答案 0 :(得分:3)

为了从异步函数中检索任何值,我们可以看下面从异步函数返回String值的示例。此函数从firebase返回令牌作为String。

Future<String> getUserToken() async {
 if (Platform.isIOS) checkforIosPermission();
 await _firebaseMessaging.getToken().then((token) {
 return token;
 });
}

检查Ios权限的功能

void checkforIosPermission() async{
    await _firebaseMessaging.requestNotificationPermissions(
        IosNotificationSettings(sound: true, badge: true, alert: true));
    await _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings) {
      print("Settings registered: $settings");
    });
}

在函数getToken中接收返回值

Future<void> getToken() async {
  tokenId = await getUserToken();
}

print("token " + tokenId);

答案 1 :(得分:2)

token()是异步的,这意味着它返回Future。您可以像这样获得值。

SharedPreferences sharedPreferences;

  Future<String> token() async {
    sharedPreferences = await SharedPreferences.getInstance();
    return "Lorem ipsum dolor";
  }

  token().then((value) {
      print(value);
    });

但是有一种更好的使用SharedPreferences的方法。检查文档here

答案 2 :(得分:0)

每当函数async时,您都需要使用 await 作为其响应,否则 'Future' 的实例 将被输出