[英]Dart(/Flutter): Create function in initializer list
我正在用多個構造函數實現一個類,該類在內部圍繞IndexedWidgetBuilder(一個函數對象)構建
typedef IndexedWidgetBuilder = Widget Function(BuildContext context, int index);
現在,一個MyWidget.list
的構造MyWidget.list
將收到一個列表myList
並myList
創建IndexedWidgetBuilder myBuilder
:
IndexedWidgetBuilder myBuilder
= (BuildContext context, int index) => list[index % list.length];
雖然僅此代碼段即可完美工作,但我無法在構造函數的初始化列表中使用此代碼段。 一個最小的工作示例如下
class MyApp {
// Default constructor goes here
MyApp.list(List<int> myList) :
myBuilder = (BuildContext context, int index) => list[index % list.length];
final IndexedWidgetBuilder myBuilder;
}
在Android Studio中,此代碼段會產生錯誤:
初始化類型'Type'不能分配給字段類型'(BuildContext,int)→Widget'。
我沒有在Google上找到任何相關信息,語言文檔也未提供有用的信息。 刪除final
關鍵字並將所有內容移到構造函數的代碼塊中將是一個解決方案,盡管我只考慮萬不得已。
注意:這不是直接的抖動問題,因為它發生在每個功能對象上。
將函數括在括號中似乎可以消除警告。 雖然將其改為說括號是多余的!
MyApp.list(List<Widget> list)
: myBuilder =
((_, int index) => list[index % list.length]);
注意上下文是如何未使用的。 這意味着您的預構建窗口小部件無法訪問它,這意味着它們不能將其用於任何.of()
派生用途。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.