为什么我不能在 Text Widget flutter 中使用变量
Why can't I use variable in Text Widget flutter
最后,在一些极好的帮助下,我得到了我需要的变量,但现在的问题是为什么我不能在文本小部件中进一步使用它们,这让我很头疼。
除了在我需要的地方访问变量外,一切正常。
它打印变量就好了。
我简化了代码,只访问 json 列表的第一张地图:
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: FutureBuilder(
future: Future.wait([fetchList(), fetchMap()]),
builder: (context, snapshot) {
if (snapshot.hasData) {
print("snapshot has data");
////list json variables
final dp = (snapshot.data as List)[0] as List<dynamic>;
final first = dp[0];
final dpid1 = first["id"]; //1
final dpbme1 = first["name"];
print(dpbme1);
.......................etcetera................
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
return SafeArea(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Image.asset('assets/images/top_logo_320x40.jpg'),
Center(child: Text('$dpbme1', <<<<<gives an error 'undefined name'
style: TextStyle(..........etcetera...................
如果有人可以帮助我展示如何做,我将不胜感激。
谢谢。
您需要 return 分配变量的 if 语句中的小部件。
当您声明 dpbme1
时,您是在 if-statement 块的范围内这样做的。一旦 if-statement 结束,块中声明的任何变量都会超出范围 - 意味着不再定义名称和值。
如果您希望您的变量在 if-statement 的范围之外持续存在,您需要在它之前声明它们,或者在 if-statement 关闭之前 return 小部件:
if (snapshot.hasData) {
// Your declarations here...
return SafeArea(
// Snip
);
}
最后,在一些极好的帮助下,我得到了我需要的变量,但现在的问题是为什么我不能在文本小部件中进一步使用它们,这让我很头疼。 除了在我需要的地方访问变量外,一切正常。 它打印变量就好了。
我简化了代码,只访问 json 列表的第一张地图:
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: FutureBuilder(
future: Future.wait([fetchList(), fetchMap()]),
builder: (context, snapshot) {
if (snapshot.hasData) {
print("snapshot has data");
////list json variables
final dp = (snapshot.data as List)[0] as List<dynamic>;
final first = dp[0];
final dpid1 = first["id"]; //1
final dpbme1 = first["name"];
print(dpbme1);
.......................etcetera................
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
return SafeArea(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Image.asset('assets/images/top_logo_320x40.jpg'),
Center(child: Text('$dpbme1', <<<<<gives an error 'undefined name'
style: TextStyle(..........etcetera...................
如果有人可以帮助我展示如何做,我将不胜感激。
谢谢。
您需要 return 分配变量的 if 语句中的小部件。
当您声明 dpbme1
时,您是在 if-statement 块的范围内这样做的。一旦 if-statement 结束,块中声明的任何变量都会超出范围 - 意味着不再定义名称和值。
如果您希望您的变量在 if-statement 的范围之外持续存在,您需要在它之前声明它们,或者在 if-statement 关闭之前 return 小部件:
if (snapshot.hasData) {
// Your declarations here...
return SafeArea(
// Snip
);
}