使用Navigator.pushNamed传递参数失败:RouteSettings类型转换错误
错误根源是你直接把RouteSettings对象转成了String,而不是提取其中的arguments属性——这才是你跳转时传入的ProductModelsvar.id值。
修正后的接收参数代码:
final productProviders = Provider.of<productProvider>(context); // 提取settings中的arguments属性,再转成String final productId = ModalRoute.of(context)!.settings.arguments as String; final getCurrentProduct = productProviders.findProductById(productId);
额外建议(可选):
如果ProductModelsvar.id可能为null,或者担心传递时未传入参数,可以增加空安全处理:
final productId = ModalRoute.of(context)!.settings.arguments as String?; if (productId != null) { final getCurrentProduct = productProviders.findProductById(productId); // 后续逻辑 } else { // 处理参数为空的情况,比如弹出提示或返回上一页 }
内容的提问来源于stack exchange,提问作者Yousif 304
相关产品推荐
相关产品推荐

