作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
launch
)我想在我的 Flutter 网络应用程序中使用链接,目前是这样做的(使用 url_launcher
package ):
return MouseRegion(
cursor: SystemMouseCursors.click,
child: GestureDetector(
onTap: () {
launch('https://creativemaybeno.dev');
},
child: const Text(
'my amazing link',
style: TextStyle(
decoration: TextDecoration.underline,
),
),
),
);
launch
此代码片段在三方面做对了:
launch
起作用但是,与使用 <a>
相比,我在网络上遇到了很多问题常规 HTML 中的 anchor 元素:
链接似乎比常规网络应用中的链接打开更慢
Safari 完全阻止了我的链接(“阻止了弹出窗口”)
特别是在 Safari 上无法使用的链接以及未显示的链接预览我真的需要得到解决才能获得流畅的网络体验。我该如何实现?
最佳答案
url_launcher
package实际上有一个没有多少人知道的内置解决方案:link library .这个库提供了一个 Link
widget解决了所有提到的问题:
<a>
元素)。Link
小部件可以这样使用:
return MouseRegion(
cursor: SystemMouseCursors.click,
child: Link(
uri: Uri.parse('https://creativemaybeno.dev'),
target: LinkTarget.blank,
builder: (context, followLink) {
return GestureDetector(
onTap: followLink,
child: const Text(
'my amazing link',
style: TextStyle(
decoration: TextDecoration.underline,
// The default link color according to the HTML living standard.
// See https://html.spec.whatwg.org/multipage/rendering.html#phrasing-content-3,
// which defines :link { color: #0000EE; }.
color: Color(0xff0000ee),
),
),
);
},
),
);
如您所见,您只需指定 uri
应该和 target
一起打开它定义了如何打开链接。 通读 the docs to learn more .
现在,Link
小部件为您提供了一个 builder
通过 followLink
打回来。您只需根据需要的点击操作调用它(例如将其传递给 GestureDetector
)。
您不必使用 Text
小部件 - 你实际上可以使用任何东西,例如一个按钮。
请注意 <a>
悬停在子小部件占用的整个区域时,将显示 anchor 预览。所以尽量不要让按钮/ child 变得非常大:)
关于html - 如何在 Flutter web 中使用 <a> anchor 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68516933/
我是一名优秀的程序员,十分优秀!