最后在一些極好的幫助下,我得到了我需要的變數,但現在的問題是為什么我不能在文本小部件中進一步使用它們,讓我頭暈目眩。除了在我需要的地方訪問變數之外,一切都在作業。它可以很好地列印變數。
我簡化了代碼,只訪問了 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...................
如果有人可以幫助我展示如何做到這一點,我將不勝感激。
謝謝你。
uj5u.com熱心網友回復:
當您宣告時,dpbme1您是在 if 陳述句塊的范圍內這樣做的。一旦該 if 陳述句結束,塊內宣告的任何變數都將超出范圍 - 這意味著名稱和值都不再定義。
如果您希望您的變數在 if 陳述句的范圍之外持續存在,您需要在它之前宣告它們,或者在 if 陳述句關閉之前回傳小部件:
if (snapshot.hasData) {
// Your declarations here...
return SafeArea(
// Snip
);
}
uj5u.com熱心網友回復:
您需要在分配變數的 if 陳述句中回傳小部件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480532.html
上一篇:Dart中內置型別的多載運算子
