使用flutter_linkify包检测文本中的链接并使其可点击,但链接的形状没有排列,我想将其放入容器或任何小部件中。是否有方法或解决方案,注意:我不想使用url_launcher包,因为我显示来自firebase的数据,有时我放置链接,有时我没有,所以我使用位于顶部的库,因为它检测到文本之间的链接。
发布于 2022-08-08 14:33:38
首先,让我告诉您,这是一个占用时间的过程,但这可以给您want.so的结果,您需要做的是在android中访问您的项目,并从项目文件夹层次结构中展开外部库,然后展开Dart Packages,然后查找(其中x.x.x是您的版本号)。现在展开这个文件夹,您将看到flutter_linkify.dart.打开这个文件,如果您使用Linkify方法,然后转到第312行,您将看到如下所示的LinkableSpan类:
class LinkableSpan extends WidgetSpan {
LinkableSpan({
required MouseCursor mouseCursor,
required InlineSpan inlineSpan,
}) : super(
child: MouseRegion(
cursor: mouseCursor,
child: Text.rich(
inlineSpan,
),
),
);
}
LinkableSpan这里有MouseRegion作为它的子级,而后者又有一个Text.rich作为它的子级。您所要做的就是在这个Text.rich周围包装您想要的任何小部件,您就可以得到所需的结果。
举个例子,我是这样做的:
class LinkableSpan extends WidgetSpan {
LinkableSpan({
required MouseCursor mouseCursor,
required InlineSpan inlineSpan,
}) : super(
child: MouseRegion(
cursor: mouseCursor,
child: Container(child: Text.rich(
inlineSpan,
),),
),
);
}
得到了这样的结果:
备注:请记住,每次编辑该文件时,您都必须停止该应用程序并完全重新运行它,因为这不是您项目的文件,而且Hot或Hot不会做任何事情。另一件需要考虑的事情是,如果您与某人共享您的项目(以压缩文件的形式或通过Github),这些更改将不会被共享,因为您将这些更改保存在您下载到发布缓存文件夹中的包中。
发布于 2022-08-09 18:37:58
谢谢你,瓦卡德·阿尔沙德,你太棒了,这是一个非常准确的答案,我得到了这个结果,(它需要一些修改,我将在未来这样做)
我的代码是
class LinkableSpan extends WidgetSpan {
LinkableSpan({[![enter image description here][1]][1]
required MouseCursor mouseCursor,
required InlineSpan inlineSpan,
}) : super(
child: MouseRegion(
cursor: mouseCursor,
child: MaterialButton(onPressed: (){},child:Container(
alignment: Alignment.center,
decoration: BoxDecoration(
image: DecorationImage(image: AssetImage('images/1.png')
,fit: BoxFit.fill
),
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: Colors.black,
blurRadius: 3.5,
spreadRadius: 1,
)
],
border:
Border.all(color: Colors.black, width: 2),
),
height: 65,
width: 300,
child:
Text.rich(
inlineSpan,
),
) ,),
),
);
}
https://stackoverflow.com/questions/73273717
复制相似问题