Flutter中点击按钮传参至需常量字符串的函数的解决办法
解决AndroidIntent构造函数「字符串必须为常量」的问题
我来帮你搞定这个问题!你遇到的核心问题是**const构造函数的参数必须是编译期常量**,而你想传递的packageNameImported是运行时的变量(按钮点击时传入的值),用它拼接出来的字符串不符合常量要求,所以触发了错误。
最简单的解决方案:去掉const关键字
既然你需要动态传入包名,完全没必要使用const来构造AndroidIntent——const是用来创建编译期固定的实例,而你每次按钮点击都需要创建一个带有不同包名的新Intent实例,所以直接去掉const即可:
deleteApp(String packageNameImported) { final AndroidIntent intent = AndroidIntent( action: 'action_delete', data: 'package:' + packageNameImported, ); intent.launch(); }
为什么这样可行?
去掉const后,AndroidIntent会使用普通构造函数,不再要求参数是编译期常量,这样你就能自由地将按钮点击时传递的packageNameImported拼接进data字段里,完美满足你的需求。
如果之后你有其他场景需要使用const构造,那一定要确保所有参数都是固定的常量值,但在这个动态传参的场景下,普通构造才是正确的选择。
内容的提问来源于stack exchange,提问作者Sukhchain Singh
相关产品推荐
相关产品推荐

