Browse Source

添加协议弹窗对接

tags/0.0.2+8
Weller 4 years ago
parent
commit
c43ea29679
5 changed files with 185 additions and 42 deletions
  1. +2
    -2
      .dart_tool/package_config.json
  2. +56
    -15
      lib/dialog/global_dialog/policy_dialog/policy_dialog.dart
  3. +97
    -0
      lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart
  4. +20
    -23
      lib/pages/home_page/home_page.dart
  5. +10
    -2
      lib/utils/contants.dart

+ 2
- 2
.dart_tool/package_config.json View File

@@ -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"
}

+ 56
- 15
lib/dialog/global_dialog/policy_dialog/policy_dialog.dart View File

@@ -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<PolicyDialog> {
@override
Widget build(BuildContext context) {
return _PolicyDialogContainer();
const PolicyDialog(this.model, {Key key}) : super(key: key);

static Future<bool> show(BuildContext context) async {
Map json =
await NetUtil.post('/api/v1/app/permissions', method: NetMethod.GET);
PolicyDialogModel model =
PolicyDialogModel.fromJson(Map<String, dynamic>.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<PolicyDialog> {
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -34,7 +50,7 @@ class _PolicyDialogContainerState extends State<_PolicyDialogContainer> {
child: Column(
children: <Widget>[
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),
),
),
),
)
),
],
)
],


+ 97
- 0
lib/dialog/global_dialog/policy_dialog/policy_dialog_model.dart View File

@@ -0,0 +1,97 @@
class PolicyDialogModel {
String title;
String titleColor;
String content;
String contentColor;
List<PolicyItemModel> 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<String, dynamic> json) {
title = json['title'];
titleColor = json['title_color'];
content = json['content'];
contentColor = json['content_color'];
if (json['selected_text'] != null) {
selectedText = new List<PolicyItemModel>();
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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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<String, dynamic> json) {
key = json['key'];
text = json['text'];
url = json['url'];
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['key'] = this.key;
data['text'] = this.text;
data['url'] = this.url;
return data;
}
}

+ 20
- 23
lib/pages/home_page/home_page.dart View File

@@ -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<HomePage> {
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<HomePage> {
}

Future<bool> _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<UserInfoNotifier>(context, listen: false)
@@ -169,4 +153,17 @@ class _HomePageState extends State<HomePage> {
}
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());
}
}
}

+ 10
- 2
lib/utils/contants.dart View File

@@ -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

}

Loading…
Cancel
Save