使文本的随机部分在不带 textSpan 的 flutter 中可点击,因为当我更改语言时,单词的顺序也会改变。对于 textSpan,我们知道文本的顺序很重要。
\n下面有土耳其语和吉尔吉斯语的用户协议文本。如果语言环境为土耳其语,则应显示土耳其语用户协议,否则应显示吉尔吉斯语用户协议。
\n示例文本:
\n我这样做的方法是以某种方式标记可点击部分,例如将其包含在{}. 然后您可以这样做,例如:
import \'package:flutter/gestures.dart\';\nimport \'package:flutter/material.dart\';\n\nvoid main() {\n runApp(MaterialApp(\n home: Column(\n children: const [\n TextWithLink(\n text: "\xd0\x9a\xd0\xb8\xd1\x80\xd2\xaf\xd2\xaf\xd0\xbd\xd2\xaf \xd0\xb1\xd0\xb0\xd1\x81\xd1\x83\xd1\x83 \xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xbd \xd0\xbc\xd0\xb5\xd0\xbd {\xd0\xa2\xd0\xb5\xd0\xb9\xd0\xbb\xd3\xa9\xd3\xa9 \xd1\x88\xd0\xb0\xd1\x80\xd1\x82\xd1\x82\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd\xd0\xb0 \xd0\xbc\xd0\xb0\xd0\xba\xd1\x83\xd0\xbb\xd0\xbc\xd1\x83\xd0\xbd}"),\n TextWithLink(\n text: "Enter\'a t\xc4\xb1klayarak {Hizmet \xc5\x9eartlar\xc4\xb1n\xc4\xb1} kabul ediyorum")\n ],\n )));\n}\n\nclass TextWithLink extends StatelessWidget {\n final String text;\n static final regex = RegExp("(?={)|(?<=})");\n\n const TextWithLink({Key? key, required this.text}) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n final split = text.split(regex);\n return RichText(\n text: TextSpan(\n children: <InlineSpan>[\n for (String text in split)\n text.startsWith(\'{\')\n ? TextSpan(\n text: text.substring(1, text.length - 1),\n style: const TextStyle(\n decoration: TextDecoration.underline, color: Colors.blue),\n recognizer: TapGestureRecognizer()\n ..onTap = () => print("click"),\n )\n : TextSpan(text: text),\n ],\n ));\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n输出:
\n\n| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |