开发带圆角按钮的登录功能时提示命名参数key必填如何解决?
问题原因及修复方案
问题原因
- 你使用的Flutter 3.0及以上版本中,你调用的按钮组件(官方原生组件、第三方UI库组件或者自定义封装的组件)将
key参数通过required标记为了必传入参,调用时未传参就会触发该编译错误。
修复方案
根据你使用的组件类型选择对应修复方式即可:
调用官方/第三方按钮组件时出现报错
直接在组件入参中补充key参数即可,参数值设为当前页面内唯一的字符串标识就行,圆角登录按钮的示例代码如下:
ElevatedButton( // 补充这行key参数即可 key: const Key('login_submit_btn'), style: ButtonStyle( // 圆角配置 shape: MaterialStateProperty.all( RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)) ) ), onPressed: () { // 你的登录逻辑 }, child: const Text('登录'), )
调用自己封装的自定义圆角按钮组件时出现报错
两种方案可选:
- 方案1:修改自定义组件的代码,去掉
key参数的required修饰符,标记为可选参数即可,示例:
class CustomRoundedButton extends StatelessWidget { // 给Key加问号标记可选,去掉required修饰 final Key? key; const CustomRoundedButton({super.key, /* 其他自定义参数 */}); // 组件其余逻辑 }
- 方案2:每次调用该自定义组件时,都按要求传入对应的
key参数即可。
补充说明:
key是Flutter框架用于标识组件、控制组件树刷新复用的参数,普通业务场景如果没有特殊的状态保持需求,随便传入一个当前页面唯一的字符串标识即可,不会影响业务功能运行。
内容的提问来源于stack exchange,提问作者MMMMMM
相关产品推荐
相关产品推荐

