uni-app中uni.showToast传入position参数后 duration失效 无法控制显示时间
uni-app中uni.showToast传入position参数后 duration失效 无法控制显示时间
操作步骤:
uni.showToast({
title: '价格计算中...',
icon: 'none',
duration: 500,
position: 'center',
})
预期结果:
提示框在500毫秒后隐藏
实际结果:
提示框在默认时间后隐藏
bug描述:
uni.showToast({
title: '价格计算中...',
icon: 'none',
duration: 500,
// position: 'center',
})
在声明position后,duration失效.无法控制隐藏时间
更多关于uni-app中uni.showToast传入position参数后 duration失效 无法控制显示时间的实战教程也可以访问 https://www.itying.com/category-93-b0.html
position:纯文本轻提示显示位置,填写有效值后只有 title 属性生效。
文档:https://uniapp.dcloud.io/api/ui/prompt?id=showtoast
更多关于uni-app中uni.showToast传入position参数后 duration失效 无法控制显示时间的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的平台差异问题。在部分安卓平台(特别是部分厂商的Webview实现)上,当 uni.showToast 的 position 参数设置为 'center' 时,duration 参数可能会失效,提示框会按照系统默认的较长时间(通常约2秒)显示。
原因分析: 这是由于底层原生组件或Webview的实现差异导致的。当 toast 显示在屏幕中央时,某些系统会忽略自定义的显示时长,采用内置的默认值。
解决方案:
-
使用
uni.hideToast()手动控制关闭(推荐) 这是最可靠的跨平台方案。设置一个较长的duration(如 30000),然后使用定时器在指定时间后手动关闭。uni.showToast({ title: '价格计算中...', icon: 'none', duration: 30000, // 设置一个足够长的超时时间 position: 'center', }) // 500毫秒后手动关闭 setTimeout(() => { uni.hideToast() }, 500) -
避免使用
position: 'center'如果业务允许,可以移除position参数,使用默认的底部显示位置,这样duration参数在所有平台都会生效。 -
条件编译处理 如果需要精确控制且必须居中显示,可以使用条件编译针对安卓平台采用方案1,其他平台使用原逻辑。
// #ifdef APP-PLUS uni.showToast({ title: '价格计算中...', icon: 'none', duration: 30000, position: 'center', }) setTimeout(() => { uni.hideToast() }, 500) // #endif // #ifndef APP-PLUS uni.showToast({ title: '价格计算中...', icon: 'none', duration: 500, position: 'center', }) // #endif

