Flutter新闻App报错:期望2个位置参数,仅传入1个求助
解决Flutter中“2 positional argument(s) expected, but 1 found”错误
问题根源
你修改了listTile函数的定义,新增了BuildContext context作为第二个必填位置参数,但在NewsHomePage的ListView.builder中调用该函数时,只传入了Article对象,缺少了context参数,导致参数不匹配报错。
修复方案
在调用listTile时补充传入当前的context即可:
修改NewsHomePage中ListView.builder的itemBuilder代码:
itemBuilder: (context, index) => listTile(articles[index], context)
修改后的完整NewsHomePage关键代码片段
return ListView.builder( itemCount: articles!.length, itemBuilder: (context, index) => listTile(articles[index], context) );
额外优化建议(可选)
如果想让函数参数更清晰,避免后续参数顺序混淆,可以将listTile的参数改为命名参数:
// 修改listTile函数定义 Widget listTile({required Article article, required BuildContext context}) { // ... 原有代码 } // 调用时使用命名参数 itemBuilder: (context, index) => listTile(article: articles[index], context: context)
这样即使后续调整参数顺序,也不会出现调用错误,代码可读性更强。
内容的提问来源于stack exchange,提问作者NyK
相关产品推荐
相关产品推荐

