簡體   English   中英

為什么我不能在文本小部件顫動中使用變量

[英]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...................

如果有人可以幫助我展示如何做到這一點,我將不勝感激。

謝謝你。

當您聲明dpbme1時,您是在 if 語句塊的范圍內這樣做的。 一旦該 if 語句結束,塊內聲明的任何變量都將超出范圍 - 這意味着名稱和值都不再定義。

如果您希望您的變量在 if 語句的范圍之外持續存在,您需要在它之前聲明它們,或者在 if 語句關閉之前返回小部件:

if (snapshot.hasData) {
  // Your declarations here...

  return SafeArea(
    // Snip
  );
}

您需要在分配變量的 if 語句中返回小部件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM