Flutter中ListView的onDismissed调用方法导致页面崩溃求助
问题排查与解决
核心错误原因
你在Dismissible的onDismissed属性中直接调用了deleteRival(rival.idRival),这会导致Widget构建阶段就执行删除操作,同时onDismissed要求传入的是VoidCallback(无参数的函数类型),而你传入的是deleteRival执行后返回的Future对象,类型不匹配直接引发崩溃。
修复代码
修改Dismissible的onDismissed部分:
onDismissed: () => deleteRival(rival.idRival), // 用箭头函数包装,传递回调而非执行结果
优化建议(可选)
你的deleteRival方法中同时使用await和.then存在冗余,可以简化写法,同时增加异常捕获避免数据库操作出错导致的未知问题:
Future<void> deleteRival(rivalId) async { final statAccess = DatabaseModel(); try { final value = await statAccess.deleteRival(rivalId); if (value == 1) { alertDialog("Suppression réussie", true); } else { alertDialog("Suppresion échouée", false); } } catch (e) { alertDialog("Erreur lors de la suppression", false); print("删除错误: $e"); } }
内容的提问来源于stack exchange,提问作者zsupraz
相关产品推荐
相关产品推荐

