diff --git a/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart b/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart index 4c9413a..b9c03a4 100644 --- a/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart +++ b/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart @@ -11,8 +11,8 @@ class PolicyDialog extends StatefulWidget { const PolicyDialog(this.model, {Key key}) : super(key: key); static Future show(BuildContext context) async { - Map json = - await NetUtil.post('/api/v1/app/permissions', method: NetMethod.GET); + // 旧接口:/api/v1/app/permissions + Map json = await NetUtil.post('/api/v1/app/new_permissions', method: NetMethod.GET); PolicyDialogModel model = PolicyDialogModel.fromJson(Map.from(json['data'])); bool agree = null; @@ -58,7 +58,7 @@ class _PolicyDialogState extends State { child: Padding( padding: const EdgeInsets.only(top: 8.0, bottom: 8.0), child: SingleChildScrollView( - child: _createText(), + child: _createNewText(), ), ), ), @@ -123,6 +123,55 @@ class _PolicyDialogState extends State { ); } + /// 新的替换方法 + Widget _createNewText() { + String content = widget.model?.content ?? ''; + List texts = List(); + if (!EmptyUtil.isEmpty(content)) { + // 需要替换 + if (!EmptyUtil.isEmpty(widget?.model?.selectedText)) { + widget.model.selectedText.forEach((item) { + // 切割关键字不等于null,并且content内有找到切割关键字才进行操作 + if (!EmptyUtil.isEmpty(item?.key) && content.indexOf(item.key) != -1) { + List tempArr = content.split(item.key); + if (!EmptyUtil.isEmpty(tempArr) && tempArr.length == 2) { + // step1、普通文字 + texts.add(TextSpan(text: tempArr[0])); + // step2、点击链接 + texts.add(TextSpan( + text: item?.text ?? '', + recognizer: TapGestureRecognizer() + ..onTap = () { + NativeUtil.openUrl(context, item?.url ?? ''); + }, + style: TextStyle(color: HexColor.fromHex(widget.model?.selectedColor ?? '#FF4242')), + )); + // step3、更新切割后的数据 + content = tempArr[1]; + } + } + }); + } else { + // 无需替换 + texts.add(TextSpan( + text: content + )); + } + } + return EmptyUtil.isEmpty(texts) ? Container() : RichText( + textAlign: TextAlign.left, + text: TextSpan( + text: '', + style: TextStyle( + height: 1.2, + fontSize: 14, + color: HexColor.fromHex('#555555'), + ), + children: texts), + ); + } + + // 弃用 Widget _createText() { String content = widget.model?.content ?? ''; Map replaces = Map();