更新隐私政策相关

master
laiiihz 5 years ago
parent ba00d1a168
commit 6278ad7a2b

@ -87,6 +87,9 @@ android {
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources false
ndk {
abiFilters 'arm64-v8a'
}
}
}

@ -8,6 +8,8 @@ import 'package:flutter/services.dart';
import 'package:flutter_bugly/flutter_bugly.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:oktoast/oktoast.dart';
import 'package:package_signature/package_signature.dart';
@ -22,6 +24,7 @@ import 'package:recook/redux/openinstall_state.dart';
import 'package:recook/redux/recook_state.dart';
import 'package:recook/third_party/bugly_helper.dart';
import 'package:recook/utils/CommonLocalizationsDelegate.dart';
import 'package:recook/utils/storage/hive_store.dart';
import 'package:recook/utils/test.dart';
import 'package:redux/redux.dart';
import 'package:tencent_im_plugin/tencent_im_plugin.dart';
@ -54,6 +57,9 @@ void main() async {
bool isDebug = true;
AppConfig.setDebug(isDebug);
await Hive.initFlutter();
await HiveStore.initBox();
bool inTest = Test.test();
if (inTest) {
return;
@ -118,6 +124,7 @@ class MyAppState extends State<MyApp> {
initPlatformState();
BuglyHelper.initialSDK();
checkSignature();
// BuglyHelper.setUserInfo();
// ShareSDKRegister register = ShareSDKRegister();
// register.setupQQ("1109724223", "UGWklum7WWI03ll9");

@ -151,5 +151,228 @@ class AgreementsMD {
        2020716
''';
static const String privacy = '''# 用户使用协议
使
使
使使使
##
****
使
使使怀使
##
1.
使
使
2.
使
3.
4.
##
使使使使
##
1. 使
2.
3.
##
使使
1.
2.
3.
4.
5.
6.
7.
1.
2.
3. 使
4. 访
5. 使
##
1.
使
2.
使
使使
使使
使
##
1.
使
2.
2.1
2.2 使便
2.3 使
2.4 访
##
1. 使
使
2.
3.
4.
5. 访使
##
1.
2.
##
便
##
便
#
使
使使使使
使使
1.
2. 使
3. 访
4. 使
##
使
使
##
1. 使
使使
1.1
使使/便使使使
1.2 使
a
便使使
/
使使使/使
b
/
使使
c
 
使
d
//使
使
e
访
/使
/访使//使
使
使使
/便/使
/app
/访使使使
使
使
2.1
使IPrefer/
2.2 Cookie使
Cookie访使CookieFlashCookieCookie
aCookiesCookies 便使Cookies使Cookies广
bCookiesCookiesCookies使Cookies
cCookies
## 访
访使访
## 使
1.
1.1
线使广
1.2
1.3
1.4
1.5
1.6
1.7
2.
使使SSL便
访
访使访
3. 使
13使
13
##
使
''';
}

@ -16,7 +16,9 @@ import 'package:recook/constants/header.dart';
import 'package:recook/daos/user_dao.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/login/wechat_bind_page.dart';
import 'package:recook/pages/welcome/privacy_page_v2.dart';
import 'package:recook/third_party/wechat/wechat_utils.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/progress/sc_dialog.dart';
import 'package:recook/widgets/toast.dart';
import 'package:recook/widgets/webView.dart';
@ -239,12 +241,13 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
final TapGestureRecognizer recognizer = new TapGestureRecognizer();
recognizer.onTap = () {
// print("点击协议了");
AppRouter.push(
context,
RouteName.WEB_VIEW_PAGE,
arguments: WebViewPage.setArguments(
url: WebApi.privacy, title: "用户使用协议", hideBar: true),
);
// AppRouter.push(
// context,
// RouteName.WEB_VIEW_PAGE,
// arguments: WebViewPage.setArguments(
// url: WebApi.privacy, title: "用户使用协议", hideBar: true),
// );
CRoute.push(context, PrivacyPageV2());
};
return recognizer;
}

@ -4,6 +4,8 @@ import 'package:recook/base/base_store_state.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/welcome/privacy_page_v2.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/alert.dart';
import 'package:recook/widgets/custom_app_bar.dart';
import 'package:recook/widgets/sc_tile.dart';
@ -66,12 +68,13 @@ class _SettingItemListViewState extends BaseStoreState<SettingItemListView> {
// context, RouteName.WEB_VIEW_PAGE, arguments: WebViewPage.setArguments(url: WebApi.aboutUs, title: "关于我们"), );
}),
SCTile.normalTile("隐私政策", listener: () {
AppRouter.push(
context,
RouteName.WEB_VIEW_PAGE,
arguments: WebViewPage.setArguments(
url: WebApi.privacy, title: "隐私政策"),
);
// AppRouter.push(
// context,
// RouteName.WEB_VIEW_PAGE,
// arguments: WebViewPage.setArguments(
// url: WebApi.privacy, title: "隐私政策"),
// );
CRoute.push(context, PrivacyPageV2());
}),
getEmptyBox(),
SCTile.normalTile("退出登录", listener: () {

@ -0,0 +1,246 @@
import 'package:flutter/material.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/pages/welcome/privacy_page_v2.dart';
import 'package:recook/utils/custom_route.dart';
Future<bool> launchPrivacyDialog(BuildContext context) async {
return await showDialog(
context: context,
child: _PrivacyDialog(),
barrierDismissible: false,
);
}
Future launchPrivacySecondDialog(BuildContext context) async {
return await showDialog(
context: context,
child: _PrivacySecondDialog(),
barrierDismissible: false,
);
}
class _PrivacyDialog extends StatefulWidget {
_PrivacyDialog({Key key}) : super(key: key);
@override
__PrivacyDialogState createState() => __PrivacyDialogState();
}
class __PrivacyDialogState extends State<_PrivacyDialog> {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
height: rSize(510),
margin: EdgeInsets.symmetric(horizontal: rSize(36)),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(rSize(16)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Expanded(
child: Material(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(rSize(18)),
),
color: Colors.white,
child: ListView(
padding: EdgeInsets.symmetric(horizontal: rSize(16)),
children: [
rHBox(26),
Center(
child: Text(
'感谢您下载瑞库客',
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(16),
fontWeight: FontWeight.bold,
),
),
),
rHBox(14),
Text(
'''请您了解,您需要注册成为瑞库客用户后方可使用本软件的网上购物功能,在您注册前您仍可以浏览本软件中的商品和服务内容。请您充分了解在使用本软件过程中我们可能收集、使用、或共享您个人信息的情形,希望您着重关注:
使
''',
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(12),
),
),
rHBox(50),
GestureDetector(
onTap: () {
CRoute.push(context, PrivacyPageV2());
},
child: Text.rich(TextSpan(
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(10),
),
children: [
TextSpan(
text: '相关您个人信息的相关问题,详见',
),
TextSpan(
text: '《用户协议和隐私政策》',
style: TextStyle(
color: Color(0xFFFA3524),
fontSize: rSP(10),
),
),
TextSpan(
text:
'全文,请您认真阅读并充分理解,如您同意我们的政策内容,请点击同意并继续使用本软件。我们会不断完善技术和安全管理,保护您的个人信息。',
),
],
)),
),
],
),
),
),
Container(
margin: EdgeInsets.symmetric(horizontal: rSize(20)),
height: rSize(36),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
Color(0xFFFA2F19),
Color(0xFFF95F19),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
borderRadius: BorderRadius.circular(rSize(18)),
),
child: MaterialButton(
shape: StadiumBorder(),
onPressed: () => Navigator.pop(context, true),
child: Text(
'同 意',
style: TextStyle(
color: Colors.white,
fontSize: rSP(14),
),
),
),
),
MaterialButton(
onPressed: () => Navigator.pop(context, false),
child: Text(
'不同意',
style: TextStyle(
color: Color(0xFF999999),
fontSize: rSP(14),
),
),
),
SizedBox(height: rSize(10)),
],
),
),
);
}
}
class _PrivacySecondDialog extends StatelessWidget {
const _PrivacySecondDialog({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(rSize(16)),
color: Colors.white,
),
margin: EdgeInsets.symmetric(horizontal: rSize(36)),
child: Material(
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: rSize(10),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
rHBox(26),
Center(
child: Text(
'我们将充分尊重并保护您的隐私,\n请您放心',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: rSP(16),
color: Color(0xFF333333),
),
),
),
rHBox(20),
GestureDetector(
onTap: () {
CRoute.push(context, PrivacyPageV2());
},
child: Text.rich(TextSpan(
children: [
TextSpan(text: '您可再次查看'),
TextSpan(
text: '《用户协议和隐私政策》',
style: TextStyle(
color: Color(0xFFFD3212),
fontSize: rSP(14),
),
),
TextSpan(text: '全文。如您同意我们的政策内容后,您可继续使用瑞库客'),
],
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(14),
),
)),
),
rHBox(26),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MaterialButton(
child: Text(
'退出应用',
style: TextStyle(
color: Color(0xFFFD3212),
fontSize: rSP(14),
),
),
height: rSize(30),
shape: StadiumBorder(
side: BorderSide(color: Color(0xFFFD3212))),
minWidth: rSize(105),
onPressed: () => Navigator.pop(context, false),
),
MaterialButton(
child: Text(
'同意',
style: TextStyle(
color: Colors.white,
fontSize: rSP(14),
),
),
minWidth: rSize(105),
height: rSize(30),
color: Color(0xFFFD3212),
shape: StadiumBorder(),
onPressed: () => Navigator.pop(context, true),
),
],
),
],
),
),
color: Colors.transparent,
),
),
);
}
}

@ -9,9 +9,13 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:raw_toast/raw_toast.dart';
import 'package:recook/base/base_store_state.dart';
import 'package:recook/constants/constants.dart';
import 'package:recook/pages/welcome/launch_privacy_dialog.dart';
import 'package:recook/utils/app_router.dart';
import 'package:recook/utils/storage/hive_store.dart';
import 'package:sprintf/sprintf.dart';
class LaunchWidget extends StatefulWidget {
@ -41,11 +45,25 @@ class _LaunchWidgetState extends BaseStoreState<LaunchWidget>
"assets/recook_launch_image/recook_launch_image_$i.png");
});
}
WidgetsBinding.instance.addPostFrameCallback((callback) {
WidgetsBinding.instance.addPostFrameCallback((callback) async {
// _gifController.repeat(min: 0, max:59, period: Duration(milliseconds: 1500));
Future.delayed(Duration(milliseconds: 2000), () {
AppRouter.fadeAndReplaced(globalContext, RouteName.WELCOME_PAGE);
});
await Future.delayed(Duration(milliseconds: 2000));
if (HiveStore.appBox.get('privacy_init') == null) {
// if (true) {
bool agreeResult = (await launchPrivacyDialog(context)) ?? false;
if (!agreeResult) {
//1
bool secondAgree =
(await launchPrivacySecondDialog(context)) ?? false;
//2
if (!secondAgree) SystemNavigator.pop();
// else
// HiveStore.appBox.put('privacy_init', true);
}
// else
// HiveStore.appBox.put('privacy_init', true);
}
AppRouter.fadeAndReplaced(globalContext, RouteName.WELCOME_PAGE);
});
}

@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/pages/agreements/agreements_markdown.dart';
import 'package:recook/widgets/recook/recook_scaffold.dart';
class PrivacyPageV2 extends StatefulWidget {
PrivacyPageV2({Key key}) : super(key: key);
@override
_PrivacyPageV2State createState() => _PrivacyPageV2State();
}
class _PrivacyPageV2State extends State<PrivacyPageV2> {
TextStyle get black => TextStyle(
color: Color(0xFF333333),
);
@override
Widget build(BuildContext context) {
return RecookScaffold(
title: '瑞库客App用户使用协议及隐私政策',
body: Markdown(
styleSheet: MarkdownStyleSheet(
h1: black,
h2: black.copyWith(
fontWeight: FontWeight.bold,
fontSize: rSP(18),
),
h3: black,
h4: black,
p: black,
codeblockDecoration: BoxDecoration(
color: Colors.white,
),
code: TextStyle(
backgroundColor: Colors.white,
color: Color(0xFF333333),
),
),
data: AgreementsMD.privacy,
),
);
}
}

@ -0,0 +1,9 @@
import 'package:hive/hive.dart';
class HiveStore {
static Box _appBox;
static Box get appBox => _appBox;
static Future initBox() async {
_appBox = await Hive.openBox('app');
}
}

@ -536,6 +536,20 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.8.6"
hive:
dependency: "direct main"
description:
name: hive
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.4+1"
hive_flutter:
dependency: "direct main"
description:
name: hive_flutter
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.1"
html:
dependency: transitive
description:

@ -213,6 +213,8 @@ dependencies:
raw_toast: ^0.0.1
hive: ^1.4.4+1
hive_flutter: ^0.3.1
dev_dependencies:
flutter_test:

Loading…
Cancel
Save