我成功地将 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'
.
我该如何解决这个问题?
我假设您的代码与此类似:
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
类中的任何方法/成员访问。