如何在Flutter中实现WordPress JSON API返回链接的可点击功能?
解决方案:利用flutter_html的链接回调实现应用内跳转
你当前使用的Html组件(来自flutter_html包)本身就支持处理链接点击,不需要换成RichText(后者需要手动将HTML字符串转换为InlineSpan,这也是你报错的原因)。直接通过以下步骤实现可点击的应用内跳转:
1. 给Html组件添加onLinkTap回调
修改你的Html渲染代码,新增onLinkTap参数来拦截链接点击事件,处理应用内路由跳转:
Html( data: _content, // 添加链接点击回调 onLinkTap: (String? url, RenderContext renderContext, Map<String, String> attributes, _) { if (url == null) return; // 处理链接:根据WordPress返回的href格式选择对应逻辑 if (url.startsWith('http')) { // 如果是完整URL(如http://192.168.6.165/test),提取帖子slug final uri = Uri.parse(url); final postSlug = uri.pathSegments.last; // 跳转到应用内帖子详情页,假设你的详情页是PostDetailPage Navigator.push( context, MaterialPageRoute( builder: (context) => PostDetailPage(slug: postSlug), ), ); } else { // 如果是直接的帖子slug(如示例中的"test"),直接用slug跳转 Navigator.push( context, MaterialPageRoute( builder: (context) => PostDetailPage(slug: url), ), ); } }, )
2. 补充说明
- 你之前用
RichText报错是因为RichText的text参数要求传入InlineSpan类型,而不是原始的HTML字符串,转换过程需要额外的解析逻辑,远不如直接使用flutter_html的回调便捷。 - 确保你的应用已经定义了对应的帖子详情页路由(比如
PostDetailPage),并能通过slug获取对应帖子内容。
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

