Flutter开发报错:命名参数'user'/'story'缺失,求解决方案
Flutter Facebook UI克隆应用错误解决方法
错误根源
你写的_StoryCard组件构造函数里,user和story都被设为必填参数,但实际调用时:
- 生成“添加故事”卡片(index=0)时,只传了
isAddStory和user,没传story - 生成普通故事卡片时,只传了
story,没传user
而你的业务逻辑是二选一:添加故事用用户头像,普通故事用故事内容,根本不需要同时传这两个参数。
修复步骤
把_StoryCard的构造函数改成可选参数,再加个断言保证参数逻辑正确:
class _StoryCard extends StatelessWidget { final bool isAddStory; final User? user; final Story? story; const _StoryCard({ Key? key, this.isAddStory = false, this.user, this.story, }) : assert( (isAddStory && user != null) || (!isAddStory && story != null), "添加故事时必须传user,普通故事必须传story" ), super(key: key); @override Widget build(BuildContext context) { return Stack( children: [ CachedNetworkImage( imageUrl: isAddStory ? user!.imageUrl : story!.imageUrl, height: double.infinity, width: 110.0, fit: BoxFit.cover, ), ], ); } }
为什么这样改
- 把
user和story改成可空可选参数,允许只传其中一个 - 断言会在开发阶段帮你把关:添加故事必须传user,普通故事必须传story,避免传错参数
- 原来的调用代码不用改,现在能正常运行
内容的提问来源于stack exchange,提问作者LORS HIM
相关产品推荐
相关产品推荐

