web-dev-qa-db-ja.com

未来の戻り値を変数のように使用する方法

Future戻り値を取得し、変数のように使用したい。このFuture関数があります

  Future<User> _fetchUserInfo(String id) async {
    User fetchedUser;
    await Firestore.instance
        .collection('user')
        .document(id)
        .get()
        .then((snapshot) {
      final User user = User(snapshot);
      fetchedUser = user;
    });
    return fetchedUser;
  }

そして、私はそのような価値を得たい

final user = _fetchUserInfo(id);

しかし、私はこのように使用しようとしたとき

new Text(user.userName);

DartはUserクラスとして認識しません。 dynamicと表示されます。
戻り値を取得して使用するにはどうすればよいですか?
最初に間違った方法をやっていますか?どんな助けも大歓迎です!

7
TwoSan

コードを単純化できます:

Future<User> _fetchUserInfo(String id) async {
    User fetchedUser;
    var snapshot = await Firestore.instance
        .collection('user')
        .document(id)
        .get();
    return User(snapshot);
  }

値を取得するにはasync/awaitも必要です

void foo() async {
  final user = await _fetchUserInfo(id);
}
16

このように使う

var username;
dbHelper.getUsers().then((user) {
  username = user.getName;
});

この関数は将来の値を返します

dbHelper.getUsers()

このように書かれています

getUsers() async { .... }
1
Rashid Iqbal