From c43ea296794251ff2fbcd0dbd3d7456cd28a0a15 Mon Sep 17 00:00:00 2001 From: Weller <1812208341@qq.com> Date: Wed, 18 Nov 2020 09:19:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=8F=E8=AE=AE=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 4 +- .../policy_dialog/policy_dialog.dart | 71 +++++++++++--- .../policy_dialog/policy_dialog_model.dart | 97 +++++++++++++++++++ lib/pages/home_page/home_page.dart | 43 ++++---- lib/utils/contants.dart | 12 ++- 5 files changed, 185 insertions(+), 42 deletions(-) create mode 100644 lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 5b4396d..3c59bf5 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -405,7 +405,7 @@ }, { "name": "pull_to_refresh", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pull_to_refresh-1.6.2", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/pull_to_refresh-1.6.3", "packageUri": "lib/", "languageVersion": "2.1" }, @@ -650,7 +650,7 @@ "languageVersion": "2.8" } ], - "generated": "2020-11-16T07:14:17.614805Z", + "generated": "2020-11-17T09:51:34.034604Z", "generator": "pub", "generatorVersion": "2.8.2" } diff --git a/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart b/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart index c0ee5ba..93d7c29 100644 --- a/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart +++ b/lib/dialog/global_dialog/policy_dialog/policy_dialog.dart @@ -1,25 +1,41 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_confirm_dialog.dart'; +import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_dialog_model.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; class PolicyDialog extends StatefulWidget { - @override - _PolicyDialogState createState() => _PolicyDialogState(); -} + final PolicyDialogModel model; -class _PolicyDialogState extends State { - @override - Widget build(BuildContext context) { - return _PolicyDialogContainer(); + 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); + PolicyDialogModel model = + PolicyDialogModel.fromJson(Map.from(json['data'])); + bool agree = null; + while (agree == null) { + agree = await showCupertinoDialog( + context: context, builder: (_) => PolicyDialog(model)); + } + if (agree) { + return agree; + } + bool accept = null; + while (accept == null) { + accept = await showCupertinoDialog( + context: context, builder: (_) => PolicyConfirmDialog()); + } + return accept; } -} -class _PolicyDialogContainer extends StatefulWidget { @override - _PolicyDialogContainerState createState() => _PolicyDialogContainerState(); + _PolicyDialogState createState() => _PolicyDialogState(); } -class _PolicyDialogContainerState extends State<_PolicyDialogContainer> { +class _PolicyDialogState extends State { @override Widget build(BuildContext context) { return Scaffold( @@ -34,7 +50,7 @@ class _PolicyDialogContainerState extends State<_PolicyDialogContainer> { child: Column( children: [ Text( - '温馨提示', + widget.model?.title ?? '', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), Expanded( @@ -54,7 +70,20 @@ class _PolicyDialogContainerState extends State<_PolicyDialogContainer> { }, child: Container( height: 36, - color: Colors.redAccent, + child: Center( + child: Text( + widget.model?.leftBfnText ?? '', + style: TextStyle( + color: HexColor.fromHex( + widget.model?.leftBfnTextColor ?? '')), + ), + ), + decoration: BoxDecoration( + color: HexColor.fromHex( + widget.model?.leftBfnBgColor ?? '#ffffff'), + borderRadius: BorderRadius.circular(18), + border: + Border.all(color: Color(0xffd8d8d8), width: 1)), ), ), ), @@ -68,10 +97,22 @@ class _PolicyDialogContainerState extends State<_PolicyDialogContainer> { }, child: Container( height: 36, - color: Colors.redAccent, + child: Center( + child: Text( + widget.model?.rightBfnText ?? '', + style: TextStyle( + color: HexColor.fromHex( + widget.model?.rightBfnTextColor ?? '')), + ), + ), + decoration: BoxDecoration( + color: HexColor.fromHex( + widget.model?.rightBfnBgColor ?? ''), + borderRadius: BorderRadius.circular(18), + ), ), ), - ) + ), ], ) ], diff --git a/lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart b/lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart new file mode 100644 index 0000000..1b9d721 --- /dev/null +++ b/lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart @@ -0,0 +1,97 @@ +class PolicyDialogModel { + String title; + String titleColor; + String content; + String contentColor; + List selectedText; + String selectedColor; + PolicyDialogModel subDialog; + String leftBfnText; + String leftBfnTextColor; + String leftBfnBgColor; + String rightBfnText; + String rightBfnTextColor; + String rightBfnBgColor; + + PolicyDialogModel( + {this.title, + this.titleColor, + this.content, + this.contentColor, + this.selectedText, + this.selectedColor, + this.subDialog, + this.leftBfnText, + this.leftBfnTextColor, + this.leftBfnBgColor, + this.rightBfnText, + this.rightBfnTextColor, + this.rightBfnBgColor}); + + PolicyDialogModel.fromJson(Map json) { + title = json['title']; + titleColor = json['title_color']; + content = json['content']; + contentColor = json['content_color']; + if (json['selected_text'] != null) { + selectedText = new List(); + json['selected_text'].forEach((v) { + selectedText.add(new PolicyItemModel.fromJson(v)); + }); + } + selectedColor = json['selected_color']; + subDialog = json['sub_dialog'] != null + ? new PolicyDialogModel.fromJson(json['sub_dialog']) + : null; + leftBfnText = json['left_bfn_text']; + leftBfnTextColor = json['left_bfn_text_color']; + leftBfnBgColor = json['left_bfn_bg_color']; + rightBfnText = json['right_bfn_text']; + rightBfnTextColor = json['right_bfn__text_color']; + rightBfnBgColor = json['right_bfn_bg_color']; + } + + Map toJson() { + final Map data = new Map(); + data['title'] = this.title; + data['title_color'] = this.titleColor; + data['content'] = this.content; + data['content_color'] = this.contentColor; + if (this.selectedText != null) { + data['selected_text'] = this.selectedText.map((v) => v.toJson()).toList(); + } + data['selected_color'] = this.selectedColor; + if (this.subDialog != null) { + data['sub_dialog'] = this.subDialog.toJson(); + } + data['left_bfn_text'] = this.leftBfnText; + data['left_bfn_text_color'] = this.leftBfnTextColor; + data['left_bfn_bg_color'] = this.leftBfnBgColor; + data['right_bfn_text'] = this.rightBfnText; + data['right_bfn__text_color'] = this.rightBfnTextColor; + data['right_bfn_bg_color'] = this.rightBfnBgColor; + return data; + } +} + +class PolicyItemModel { + String key; + String text; + String url; + + PolicyItemModel({this.key, this.text, this.url}); + + PolicyItemModel.fromJson(Map json) { + key = json['key']; + text = json['text']; + url = json['url']; + } + + Map toJson() { + final Map data = new Map(); + data['key'] = this.key; + data['text'] = this.text; + data['url'] = this.url; + return data; + } +} diff --git a/lib/pages/home_page/home_page.dart b/lib/pages/home_page/home_page.dart index 7fb0fad..a1e7d18 100644 --- a/lib/pages/home_page/home_page.dart +++ b/lib/pages/home_page/home_page.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:zhiying_base_widget/dialog/global_dialog/notification_setting_dialog/notification_setting_dialog.dart'; -import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_confirm_dialog.dart'; import 'package:zhiying_base_widget/dialog/global_dialog/policy_dialog/policy_dialog.dart'; import 'package:zhiying_base_widget/utils/contants.dart'; import 'package:zhiying_comm/models/base/base_tab_model.dart'; @@ -42,6 +41,13 @@ class _HomePageState extends State { AppUpdateUtil.updateApp(context); TaobaoAuth.initAuth(context); + // SharedPreferencesUtil.getStringValue(Constants.isShowPolicy).then((value) { + // Logger.debug(value); + // if (value == null || value == '') { + // _showPolicy(); + // } + // }); + super.initState(); } @@ -134,28 +140,6 @@ class _HomePageState extends State { } Future _checkLimit(BaseTabModel model) async { - // bool agree = null; - // while (agree == null) { - // agree = await showCupertinoDialog( - // context: context, builder: (_) => PolicyDialog()); - // } - // if (!agree) { - // bool accept = null; - // while (accept == null) { - // accept = await showCupertinoDialog( - // context: context, builder: (_) => PolicyConfirmDialog()); - // } - // if (!accept) { - // exit(0); - // } - // } - // - // PermissionStatus status = await Permission.notification.status; - // if (status != PermissionStatus.granted) { - // await showCupertinoDialog( - // context: context, builder: (_) => NotificationSettingDialog()); - // } - if (model.requiredLogin == '1') { UserInfoModel user = await Provider.of(context, listen: false) @@ -169,4 +153,17 @@ class _HomePageState extends State { } return true; } + + void _showPolicy() async { + bool isAccept = await PolicyDialog.show(context); + if (!isAccept) { + exit(0); + } + + PermissionStatus status = await Permission.notification.status; + if (status != PermissionStatus.granted) { + await showCupertinoDialog( + context: context, builder: (_) => NotificationSettingDialog()); + } + } } diff --git a/lib/utils/contants.dart b/lib/utils/contants.dart index 69b4250..0fa713b 100644 --- a/lib/utils/contants.dart +++ b/lib/utils/contants.dart @@ -4,15 +4,23 @@ import 'package:flutter/material.dart'; class Constants { ///获取模块类型 static const String SkipIdentifierName = "skip_identifier"; + ///全局context //==============================智能粘贴版===================================start static BuildContext context; + ///智能搜索版是否弹起 - static bool isShowIntellectDialog=false; + static bool isShowIntellectDialog = false; + ///是否缓存设置信息 - static String spIsCacheSetModel="spIsCacheSetModel"; + static String spIsCacheSetModel = "spIsCacheSetModel"; //==============================智能粘贴版===================================end + //==============================用户协议===================================start + ///用户协议显示 + static String isShowPolicy = "is_show_policy"; +//==============================用户协议===================================end + }