Flutter Web:使用launchUrl打开新标签页并保持原标签页聚焦
在Flutter Web中保持原标签页焦点的解决方案
当使用launchUrl并设置webOnlyWindowName: '_blank'时,浏览器会自动将焦点切换到新打开的标签页。要让焦点留在原标签页,可以通过直接调用Web原生API实现,具体步骤如下:
- 导入
dart:js包,用于调用浏览器的JavaScript API - 手动调用
window.open打开新标签页,随后立即将焦点切回原窗口
代码示例
import 'dart:js' as js; void openUrlInBackground(Uri uri) { // 打开新标签页 js.context.callMethod('open', [uri.toString(), '_blank']); // 将焦点重新定位到当前标签页 js.context['window'].callMethod('focus'); }
注意事项
- 该操作必须触发自用户交互(比如按钮点击事件),否则可能被浏览器的弹出窗口拦截器阻止
- 此方法直接依赖Web环境的原生API,仅适用于Flutter Web场景
内容的提问来源于stack exchange,提问作者Md. Majedur Rahman
相关产品推荐
相关产品推荐

