为什么我不能在 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
  );
}