【发布时间】:2021-10-20 11:50:29
【问题描述】:
请帮忙。我有 categoryListItems 功能来构建列表视图。
ListView categoryListItems() {
return ListView.builder(
shrinkWrap: true,
padding: EdgeInsets.all(0),
itemCount: this.count,
itemBuilder: (BuildContext context, int index) {
return ListTile(
dense: true,
title: Text(
this.cats[index].title,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
),
),
onTap: () => openAddCategoryDialog(this.cats[index]),
);
},
);
}
我也有 openAddCategoryDialog 函数,为 onTap 方法提供参数
void openAddCategoryDialog(Category cat) async {
Category save = await Navigator.of(context).push(
new MaterialPageRoute<Category>(
builder: (BuildContext context) {
return new AddCategoryScreen(cat);
},
fullscreenDialog: true,
),
);
if (save != null) {
setState(() {
getData();
});
}
}
一旦调试我得到以下错误。 在构建 LayoutScreen(dirty, state: _LayoutScreenState#35628) 时引发了以下 _TypeError: type '(Category) => void' 不是类型 '(() => void) 的子类型?
【问题讨论】:
-
尝试删除提示框功能的 void 关键字
-
该错误表明您有一个将
Category作为必需的位置参数的函数,并且您将该函数传递给预期不带参数的(可选)函数。但是,我在您显示的代码中看不到这一点。您确定错误来自此代码而不是其他地方吗? -
我刚刚从函数 openAddCategoryDialog 中删除了 void 类型,它工作正常。谢谢!