簡體   English   中英

錯誤:預期 4 個位置參數,但找到 0 個

[英]error: 4 positional argument(s) expected, but 0 found

我正在嘗試用顫振構建一個應用程序。 我收到一個我無法弄清楚的錯誤:

這是導航欄的代碼,然后將其調用到多個頁面在此處輸入圖像描述

這是發生錯誤的地方:

在此處輸入圖像描述

我嘗試添加所需的 this.name, .. 參數,但它顯示不同的錯誤。

錯誤圖片

在此處輸入圖像描述

您遇到問題的原因是您需要在創建小部件時設置這些構造函數參數,除非您實際上沒有這樣做並且無法發送任何參數。 無論哪種方式,您需要做的第一件事就是擺脫 @required 指令,因為它不是必需的,特別是如果您不想包含它們。 您可以通過三種方式解決此問題:

  1. 為構造函數參數設置默認值:
const NavBar([Key? key, this.name = "", this.credit = "", this.rank = ""])
  1. 使您的構造函數參數可以為空
const NavBar([Key? key, this.name, this.credit, this.rank])

String? name;
String? credit;
String? rank;
  1. 在他們被叫到之前,讓他們遲到並在課堂上的其他地方實例化他們。 不過,我可能不會向您推薦這種方法。

此外,正如Just a Person所建議的那樣,我會將它們從位置參數轉換為命名參數,因為它為您提供了更大的靈活性。

您可以通過多種方式在 Dart 中設置構造函數,因此我無法確定哪種方法最適合您,因為這取決於您的要求。

您需要在導航欄小部件中傳遞所需的參數

drawer : NavBar('name','credit','rank')

用上面的代碼替換你的抽屜代碼。

在您的 NavBar 中,您不是在聲明一個命名參數,而是一個位置參數。 所以刪除了所有參數前面的@required或將它們括在{}中,但在這種情況下,我認為你應該命名參數,因為它會更清楚。

像這樣: NavBar(Key? key, {required this.name, this.credit, this.rank})

同時傳遞所有四個參數,但不是按名稱傳遞,因為它們不是位置的。

drawer: NavBar(name: name, credit: credit, rank: rank)

暫無
暫無

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

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