如何在flutter中返回Future<String>并将值传给Map<String>

问题描述 投票:0回答:1

我成功地将 Future 返回给 String 但是我似乎无法找到正确的 wat 来分配和使用返回值。

我得到了

String name

initState() {
    name();
    super.initState();
}
void name() async {
    String? name = await getName();
    print(name.toString());
}

来自

<Future String>

static Future<String?> getName() async {
    return "This is my name";
}

然后我需要将

name
传递给
Map<String>

Map<String, String> NamesAll() {
    Map<String, String> result = new Map();
    FirstName = name;    //I get an error here: Undefined name 'name'.
    return result;
}

问题是我在地图中遇到错误:

Undefined name 'name'
.

我该如何解决这个问题?

flutter dart future
1个回答
0
投票

我假设您的代码与此类似:

class _MyHomePageState extends State<MyHomePage> {
  String FirstName = '';

  @override 
  initState() {
    name();
    super.initState();
  }

  void name() async {
    // 1.
    String? name = await getName();
    print(name.toString());
  }

  Map<String, String> NamesAll() {
    Map<String, String> result = new Map();

    FirstName = name;
    return result;
  }

  @override
  Widget build(BuildContext context) {
    ...
  }
}

如果是这种情况,那么在该方法之外无法访问您在方法名称()内部定义的

name
。有关更多信息,请参阅Lexical scopes.

如果你想让它工作,一个可能的解决方案是:

class _MyHomePageState extends State<MyHomePage> {
  String name = '';
  String FirstName = '';

  @override 
  initState() {
    name();
    super.initState();
  }

  void name() async {
    name = await getName();
    print(name.toString());
  }

  Map<String, String> NamesAll() {
    Map<String, String> result = new Map();

    FirstName = name;
    return result;
  }

  @override
  Widget build(BuildContext context) {
    ...
  }
}

在哪里

name
现在对于状态类是全局的,因此它现在是可变数据并且可以通过
_MyHomePageState
类中的任何方法/成员访问。

© www.soinside.com 2019 - 2024. All rights reserved.