Showing
13 changed files
with
223 additions
and
142 deletions
| @@ -12,14 +12,14 @@ if (flutterRoot == null) { | @@ -12,14 +12,14 @@ if (flutterRoot == null) { | ||
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | -def flutterVersionCode = "345" | 15 | +def flutterVersionCode = "356" |
| 16 | if (flutterVersionCode == null) { | 16 | if (flutterVersionCode == null) { |
| 17 | - flutterVersionCode = '345' | 17 | + flutterVersionCode = '356' |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | -def flutterVersionName = "3.4.5" | 20 | +def flutterVersionName = "3.5.6" |
| 21 | if (flutterVersionName == null) { | 21 | if (flutterVersionName == null) { |
| 22 | - flutterVersionName = '3.4.5' | 22 | + flutterVersionName = '3.5.6' |
| 23 | } | 23 | } |
| 24 | apply plugin: 'com.android.application' | 24 | apply plugin: 'com.android.application' |
| 25 | apply plugin: 'kotlin-android' | 25 | apply plugin: 'kotlin-android' |
| @@ -19,6 +19,7 @@ | @@ -19,6 +19,7 @@ | ||
| 19 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> | 19 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
| 20 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | 20 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
| 21 | <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> | 21 | <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> |
| 22 | + | ||
| 22 | <application | 23 | <application |
| 23 | android:name="io.flutter.app.FlutterApplication" | 24 | android:name="io.flutter.app.FlutterApplication" |
| 24 | android:label="一键订" | 25 | android:label="一键订" |
| @@ -13,14 +13,14 @@ class App { | @@ -13,14 +13,14 @@ class App { | ||
| 13 | static double screenHeight; | 13 | static double screenHeight; |
| 14 | static double statusBarHeight; | 14 | static double statusBarHeight; |
| 15 | static double bottomBarHeight; | 15 | static double bottomBarHeight; |
| 16 | - static GetIt getIt = GetIt.instance; | 16 | + // static GetIt getIt = GetIt.instance; |
| 17 | static bool isInstallWx = false; | 17 | static bool isInstallWx = false; |
| 18 | 18 | ||
| 19 | static initSp() async { | 19 | static initSp() async { |
| 20 | sp = await SharedPreferences.getInstance(); | 20 | sp = await SharedPreferences.getInstance(); |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | - static setupLocator() { | ||
| 24 | - getIt.registerSingleton(NavigateService()); | ||
| 25 | - } | 23 | + // static setupLocator() { |
| 24 | + // getIt.registerSingleton(NavigateService()); | ||
| 25 | + // } | ||
| 26 | } | 26 | } |
| @@ -9,13 +9,13 @@ import 'package:flutter_bugly/flutter_bugly.dart'; | @@ -9,13 +9,13 @@ import 'package:flutter_bugly/flutter_bugly.dart'; | ||
| 9 | import 'package:flutter_easyrefresh/ball_pulse_footer.dart'; | 9 | import 'package:flutter_easyrefresh/ball_pulse_footer.dart'; |
| 10 | import 'package:flutter_easyrefresh/easy_refresh.dart'; | 10 | import 'package:flutter_easyrefresh/easy_refresh.dart'; |
| 11 | import 'package:flutter_easyrefresh/material_header.dart'; | 11 | import 'package:flutter_easyrefresh/material_header.dart'; |
| 12 | -import 'package:flutter_screenutil/screenutil.dart'; | 12 | + |
| 13 | import 'package:fluwx/fluwx.dart'; | 13 | import 'package:fluwx/fluwx.dart'; |
| 14 | -import 'package:one_key/pages/detail/handle_online_page.dart'; | 14 | + |
| 15 | import 'package:one_key/pages/home/home_page.dart'; | 15 | import 'package:one_key/pages/home/home_page.dart'; |
| 16 | import 'package:one_key/pages/login/first_page.dart'; | 16 | import 'package:one_key/pages/login/first_page.dart'; |
| 17 | import 'package:one_key/pages/login/login_page_f.dart'; | 17 | import 'package:one_key/pages/login/login_page_f.dart'; |
| 18 | -import 'package:one_key/provider/base_info_provider.dart'; | 18 | + |
| 19 | import 'package:one_key/provider/coupon_provider.dart'; | 19 | import 'package:one_key/provider/coupon_provider.dart'; |
| 20 | import 'package:one_key/provider/create_store_model.dart'; | 20 | import 'package:one_key/provider/create_store_model.dart'; |
| 21 | import 'package:one_key/provider/customer_making_provider.dart'; | 21 | import 'package:one_key/provider/customer_making_provider.dart'; |
| @@ -23,110 +23,97 @@ import 'package:one_key/provider/message_dialog_model.dart'; | @@ -23,110 +23,97 @@ import 'package:one_key/provider/message_dialog_model.dart'; | ||
| 23 | import 'package:intl/date_symbol_data_local.dart'; | 23 | import 'package:intl/date_symbol_data_local.dart'; |
| 24 | import 'package:one_key/provider/message_model.dart'; | 24 | import 'package:one_key/provider/message_model.dart'; |
| 25 | import 'package:one_key/provider/notebook_detail_model.dart'; | 25 | import 'package:one_key/provider/notebook_detail_model.dart'; |
| 26 | -import 'package:one_key/provider/online_check_edit_provider.dart'; | 26 | + |
| 27 | import 'package:one_key/provider/other_login_provider.dart'; | 27 | import 'package:one_key/provider/other_login_provider.dart'; |
| 28 | import 'package:one_key/provider/remark_manager_model.dart'; | 28 | import 'package:one_key/provider/remark_manager_model.dart'; |
| 29 | -import 'package:one_key/provider/tools.dart'; | ||
| 30 | import 'package:one_key/provider/upload_img_provider.dart'; | 29 | import 'package:one_key/provider/upload_img_provider.dart'; |
| 31 | -import 'package:one_key/route/navigator_util.dart'; | ||
| 32 | import 'package:one_key/utils/utils.dart'; | 30 | import 'package:one_key/utils/utils.dart'; |
| 33 | import 'package:provider/provider.dart'; | 31 | import 'package:provider/provider.dart'; |
| 34 | -import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; | ||
| 35 | 32 | ||
| 36 | import 'app.dart'; | 33 | import 'app.dart'; |
| 37 | import 'net/dio_util.dart'; | 34 | import 'net/dio_util.dart'; |
| 38 | import 'net/http_url.dart'; | 35 | import 'net/http_url.dart'; |
| 39 | -import 'pages/login/login_page.dart'; | ||
| 40 | import 'provider/order_food_provider.dart'; | 36 | import 'provider/order_food_provider.dart'; |
| 41 | import 'provider/user_model.dart'; | 37 | import 'provider/user_model.dart'; |
| 42 | import 'route/navigate_service.dart'; | 38 | import 'route/navigate_service.dart'; |
| 43 | import 'route/routes.dart'; | 39 | import 'route/routes.dart'; |
| 44 | import 'package:flutter/services.dart'; | 40 | import 'package:flutter/services.dart'; |
| 45 | import 'package:flutter/material.dart'; | 41 | import 'package:flutter/material.dart'; |
| 46 | -import 'package:flutter/services.dart'; | ||
| 47 | -import 'package:permission_handler/permission_handler.dart'; | ||
| 48 | - | ||
| 49 | -Future<bool> _requestPermissions() async { | ||
| 50 | - Map<Permission, PermissionStatus> permissions = await [ | ||
| 51 | - Permission.photos, | ||
| 52 | - Permission.location, | ||
| 53 | - Permission.camera, | ||
| 54 | - Permission.contacts, | ||
| 55 | - Permission.storage, | ||
| 56 | - Permission.notification | ||
| 57 | - ].request(); | ||
| 58 | - | ||
| 59 | - List<bool> results = permissions.values.toList().map((status) { | ||
| 60 | - return status == PermissionStatus.granted; | ||
| 61 | - }).toList(); | ||
| 62 | - print(results.toString()); | ||
| 63 | -} | 42 | + |
| 43 | +// Future<bool> _requestPermissions() async { | ||
| 44 | +// Map<Permission, PermissionStatus> permissions = await [ | ||
| 45 | +// Permission.photos, | ||
| 46 | +// Permission.location, | ||
| 47 | +// Permission.camera, | ||
| 48 | +// Permission.contacts, | ||
| 49 | +// Permission.storage, | ||
| 50 | +// Permission.notification | ||
| 51 | +// ].request(); | ||
| 52 | + | ||
| 53 | +// List<bool> results = permissions.values.toList().map((status) { | ||
| 54 | +// return status == PermissionStatus.granted; | ||
| 55 | +// }).toList(); | ||
| 56 | +// print(results.toString()); | ||
| 57 | +// } | ||
| 64 | 58 | ||
| 65 | Future<void> main() async { | 59 | Future<void> main() async { |
| 66 | - FlutterBugly.postCatchedException(() async { | ||
| 67 | - WidgetsFlutterBinding.ensureInitialized(); | ||
| 68 | - FluroRouter router = FluroRouter(); | ||
| 69 | - Routes.configureRoutes(router); | ||
| 70 | - App.router = router; | ||
| 71 | - App.setupLocator(); | ||
| 72 | - LogUtil.init(isDebug: true, tag: 'ONE_KEY'); | ||
| 73 | - Provider.debugCheckInvalidValueType = null; | ||
| 74 | - await initializeDateFormatting(); | ||
| 75 | - // _requestPermissions(); | ||
| 76 | - Utils.changeStatusColor(); | 60 | + // FlutterBugly.postCatchedException(() async { |
| 61 | + WidgetsFlutterBinding.ensureInitialized(); | ||
| 62 | + // _requestPermissions(); | ||
| 63 | + Utils.changeStatusColor(); | ||
| 64 | + await App.initSp(); | ||
| 65 | + // App.setupLocator(); | ||
| 66 | + FluroRouter router = FluroRouter(); | ||
| 67 | + Routes.configureRoutes(router); | ||
| 68 | + App.router = router; | ||
| 77 | 69 | ||
| 78 | - await App.initSp(); | ||
| 79 | - SystemChrome.setPreferredOrientations( | ||
| 80 | - [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) | ||
| 81 | - .then((_) { | ||
| 82 | - runApp(MultiProvider( | ||
| 83 | - providers: [ | ||
| 84 | - ChangeNotifierProvider<MessageModel>( | ||
| 85 | - create: (_) => MessageModel(), | ||
| 86 | - ), | ||
| 87 | - ChangeNotifierProvider<UserModel>( | ||
| 88 | - create: (_) => UserModel(), | ||
| 89 | - ), | ||
| 90 | - ChangeNotifierProvider<MessageDialogModel>( | ||
| 91 | - create: (_) => MessageDialogModel()..init(), | ||
| 92 | - ), | ||
| 93 | - // ChangeNotifierProvider<OnlineCheckEditProvider>( | ||
| 94 | - // create: (_) => OnlineCheckEditProvider(), | ||
| 95 | - // ), | ||
| 96 | - ChangeNotifierProvider<OrderFoodProvider>( | ||
| 97 | - create: (_) => OrderFoodProvider(), | ||
| 98 | - ), | ||
| 99 | - ChangeNotifierProvider<NotebookDetailModel>( | ||
| 100 | - create: (_) => NotebookDetailModel(), | ||
| 101 | - ), | ||
| 102 | - ChangeNotifierProvider<CouponProvider>( | ||
| 103 | - create: (_) => CouponProvider(), | ||
| 104 | - ), | ||
| 105 | - ChangeNotifierProvider<UploadImageProvider>( | ||
| 106 | - create: (_) => UploadImageProvider(), | ||
| 107 | - ), | ||
| 108 | - ChangeNotifierProvider<CreateStoreModel>( | ||
| 109 | - create: (_) => CreateStoreModel(), | ||
| 110 | - ), | ||
| 111 | - ChangeNotifierProvider<RemarkManagerModel>( | ||
| 112 | - create: (_) => RemarkManagerModel(), | ||
| 113 | - ), | ||
| 114 | - ChangeNotifierProvider<CustomerMakingProvider>( | ||
| 115 | - create: (_) => CustomerMakingProvider(), | ||
| 116 | - ), | ||
| 117 | - ], | ||
| 118 | - child: MyApp(), | ||
| 119 | - )); | ||
| 120 | - }); | ||
| 121 | - // await App.initSp(); | ||
| 122 | - await AmapService.instance.init( | ||
| 123 | - iosKey: 'e373581528f8fd901c01dfbda236159e', | ||
| 124 | - androidKey: 'dbced781d0acd36184d5b4b54da7188d'); | ||
| 125 | - | ||
| 126 | - /// 如果你觉得引擎的日志太多, 可以关闭Fluttify引擎的日志 | ||
| 127 | - await enableFluttifyLog(false); // 关闭log | ||
| 128 | - FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e"); | 70 | + SystemChrome.setPreferredOrientations( |
| 71 | + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]).then((_) { | ||
| 72 | + runApp(MultiProvider( | ||
| 73 | + providers: [ | ||
| 74 | + ChangeNotifierProvider<MessageModel>( | ||
| 75 | + create: (_) => MessageModel(), | ||
| 76 | + ), | ||
| 77 | + ChangeNotifierProvider<UserModel>( | ||
| 78 | + create: (_) => UserModel(), | ||
| 79 | + ), | ||
| 80 | + ChangeNotifierProvider<MessageDialogModel>( | ||
| 81 | + create: (_) => MessageDialogModel()..init(), | ||
| 82 | + ), | ||
| 83 | + // ChangeNotifierProvider<OnlineCheckEditProvider>( | ||
| 84 | + // create: (_) => OnlineCheckEditProvider(), | ||
| 85 | + // ), | ||
| 86 | + ChangeNotifierProvider<OrderFoodProvider>( | ||
| 87 | + create: (_) => OrderFoodProvider(), | ||
| 88 | + ), | ||
| 89 | + ChangeNotifierProvider<NotebookDetailModel>( | ||
| 90 | + create: (_) => NotebookDetailModel(), | ||
| 91 | + ), | ||
| 92 | + ChangeNotifierProvider<CouponProvider>( | ||
| 93 | + create: (_) => CouponProvider(), | ||
| 94 | + ), | ||
| 95 | + ChangeNotifierProvider<UploadImageProvider>( | ||
| 96 | + create: (_) => UploadImageProvider(), | ||
| 97 | + ), | ||
| 98 | + ChangeNotifierProvider<CreateStoreModel>( | ||
| 99 | + create: (_) => CreateStoreModel(), | ||
| 100 | + ), | ||
| 101 | + ChangeNotifierProvider<RemarkManagerModel>( | ||
| 102 | + create: (_) => RemarkManagerModel(), | ||
| 103 | + ), | ||
| 104 | + ChangeNotifierProvider<CustomerMakingProvider>( | ||
| 105 | + create: (_) => CustomerMakingProvider(), | ||
| 106 | + ), | ||
| 107 | + ], | ||
| 108 | + child: MyApp(), | ||
| 109 | + )); | ||
| 129 | }); | 110 | }); |
| 111 | + // await App.initSp(); | ||
| 112 | + | ||
| 113 | + /// 如果你觉得引擎的日志太多, 可以关闭Fluttify引擎的日志 | ||
| 114 | + // await enableFluttifyLog(false); // 关闭log | ||
| 115 | + // FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e"); | ||
| 116 | + // }); | ||
| 130 | } | 117 | } |
| 131 | 118 | ||
| 132 | class MyApp extends StatefulWidget { | 119 | class MyApp extends StatefulWidget { |
| @@ -145,8 +132,7 @@ class MyAppState extends State<MyApp> { | @@ -145,8 +132,7 @@ class MyAppState extends State<MyApp> { | ||
| 145 | void initState() { | 132 | void initState() { |
| 146 | // TODO: implement initState | 133 | // TODO: implement initState |
| 147 | super.initState(); | 134 | super.initState(); |
| 148 | - initDio(); | ||
| 149 | - _initFluwx(); | 135 | + |
| 150 | _isFirst(); | 136 | _isFirst(); |
| 151 | Utils.changeStatusColor(); | 137 | Utils.changeStatusColor(); |
| 152 | // 设置EasyRefresh的默认样式 | 138 | // 设置EasyRefresh的默认样式 |
| @@ -181,18 +167,26 @@ class MyAppState extends State<MyApp> { | @@ -181,18 +167,26 @@ class MyAppState extends State<MyApp> { | ||
| 181 | } | 167 | } |
| 182 | 168 | ||
| 183 | //第一次打开应用 | 169 | //第一次打开应用 |
| 184 | - bool _isFirst() { | 170 | + _isFirst() async { |
| 185 | isFirst = App.sp.getBool("isFirst") ?? true; | 171 | isFirst = App.sp.getBool("isFirst") ?? true; |
| 186 | if (!isFirst) { | 172 | if (!isFirst) { |
| 187 | _isLogin(); | 173 | _isLogin(); |
| 174 | + initDio(); | ||
| 188 | } | 175 | } |
| 189 | } | 176 | } |
| 190 | 177 | ||
| 191 | //判断是否登录 | 178 | //判断是否登录 |
| 192 | - bool _isLogin() { | 179 | + _isLogin() async { |
| 193 | UserModel userModel = Provider.of<UserModel>(context, listen: false); | 180 | UserModel userModel = Provider.of<UserModel>(context, listen: false); |
| 194 | userModel.initUser(); | 181 | userModel.initUser(); |
| 195 | isLogin = App.sp.getBool("isLogin") ?? false; | 182 | isLogin = App.sp.getBool("isLogin") ?? false; |
| 183 | + if (isLogin) { | ||
| 184 | + LogUtil.init(isDebug: true, tag: 'ONE_KEY'); | ||
| 185 | + Provider.debugCheckInvalidValueType = null; | ||
| 186 | + await initializeDateFormatting(); | ||
| 187 | + | ||
| 188 | + _initFluwx(); | ||
| 189 | + } | ||
| 196 | } | 190 | } |
| 197 | 191 | ||
| 198 | @override | 192 | @override |
| @@ -201,7 +195,7 @@ class MyAppState extends State<MyApp> { | @@ -201,7 +195,7 @@ class MyAppState extends State<MyApp> { | ||
| 201 | return MaterialApp( | 195 | return MaterialApp( |
| 202 | debugShowCheckedModeBanner: false, | 196 | debugShowCheckedModeBanner: false, |
| 203 | title: '一键订', | 197 | title: '一键订', |
| 204 | - navigatorKey: App.getIt<NavigateService>().key, | 198 | + // navigatorKey: App.getIt<NavigateService>().key, |
| 205 | theme: ThemeData( | 199 | theme: ThemeData( |
| 206 | brightness: Brightness.light, | 200 | brightness: Brightness.light, |
| 207 | primaryColor: Colors.white, | 201 | primaryColor: Colors.white, |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | import 'dart:convert'; | 2 | import 'dart:convert'; |
| 3 | import 'dart:io'; | 3 | import 'dart:io'; |
| 4 | +import 'package:amap_map_fluttify/amap_map_fluttify.dart'; | ||
| 4 | import 'package:common_utils/common_utils.dart'; | 5 | import 'package:common_utils/common_utils.dart'; |
| 5 | import 'package:flutter/cupertino.dart'; | 6 | import 'package:flutter/cupertino.dart'; |
| 6 | import 'package:flutter/material.dart'; | 7 | import 'package:flutter/material.dart'; |
| 7 | import 'package:flutter_app_update/azhon_app_update.dart'; | 8 | import 'package:flutter_app_update/azhon_app_update.dart'; |
| 9 | +import 'package:flutter_bugly/flutter_bugly.dart'; | ||
| 8 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 10 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 9 | import 'package:one_key/models/pull_marketing_by_uid_model.dart'; | 11 | import 'package:one_key/models/pull_marketing_by_uid_model.dart'; |
| 10 | 12 | ||
| @@ -66,6 +68,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -66,6 +68,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 66 | // TODO: implement initState | 68 | // TODO: implement initState |
| 67 | super.initState(); | 69 | super.initState(); |
| 68 | LogUtil.v("home_initState"); | 70 | LogUtil.v("home_initState"); |
| 71 | + // FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e"); | ||
| 72 | + _initAmap(); | ||
| 69 | 73 | ||
| 70 | AzhonAppUpdate.listener( | 74 | AzhonAppUpdate.listener( |
| 71 | // () { | 75 | // () { |
| @@ -153,6 +157,12 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -153,6 +157,12 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 153 | }); | 157 | }); |
| 154 | } | 158 | } |
| 155 | 159 | ||
| 160 | + _initAmap() async { | ||
| 161 | + await AmapService.instance.init( | ||
| 162 | + iosKey: 'e373581528f8fd901c01dfbda236159e', | ||
| 163 | + androidKey: 'dbced781d0acd36184d5b4b54da7188d'); | ||
| 164 | + } | ||
| 165 | + | ||
| 156 | _endTimerSeller() { | 166 | _endTimerSeller() { |
| 157 | if (timerSeller != null) { | 167 | if (timerSeller != null) { |
| 158 | timerSeller.cancel(); | 168 | timerSeller.cancel(); |
| @@ -152,6 +152,24 @@ class _FirstPageState extends State<FirstPage> { | @@ -152,6 +152,24 @@ class _FirstPageState extends State<FirstPage> { | ||
| 152 | ), | 152 | ), |
| 153 | VEmptyView(16), | 153 | VEmptyView(16), |
| 154 | Text( | 154 | Text( |
| 155 | + '''为了向您提供更好的服务,我们需要获取以下权限和信息,系统将以弹窗提示征求您的授权。 | ||
| 156 | + \n1.地理位置:经授权,为了让您的客户快速地找到您的店铺,我们会收集您店铺的名称、所在位置相关信息(您授权的GPS位置信息,我们仅收集您当时所处的地理位置,但不会将您各时段的位置信息进行结合以判断您的行踪轨迹)来判断您所处的地点。 | ||
| 157 | + \n2.通讯录:经授权,为了方便您快速录入客户的姓名、联系电话,在您同意开启通讯录权限后您在录入预订订单时不需再手动输入您通讯录中联系人的信息,用于订单快速生成。 | ||
| 158 | + \n3.相册:经授权,当您设置您的通知信息时,“一键订”需要调用基于图片/视频上传的扩展功能:我们会使用您所上传的图片,作为您的形象照片和微信二维码展示,方便客户添加您的微信。 | ||
| 159 | + \n4.相机:经授权,当您传送订单水单给客户时,“一键订”需要调用基于摄像头(相机)的扩展功能:您可以使用这项扩展功能完成拍照上传水单传送给客户。 | ||
| 160 | + \n5.设备信息:经授权,我们会收集您的设备信息以保障系统运行和您的账号、交易安全。''', | ||
| 161 | + style: TextStyle( | ||
| 162 | + color: MyColours.color_333333, | ||
| 163 | + fontWeight: FontWeight.bold, | ||
| 164 | + fontSize: ScreenUtil().setSp(28), | ||
| 165 | + ), | ||
| 166 | + strutStyle: StrutStyle( | ||
| 167 | + forceStrutHeight: true, | ||
| 168 | + height: 1, | ||
| 169 | + leading: 0.3), | ||
| 170 | + ), | ||
| 171 | + VEmptyView(16), | ||
| 172 | + Text( | ||
| 155 | '我们将通过《隐私政策》向您说明:\n我们在您使用我们的产品与/或服务时如何收集、使用、保存、共享和转让这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。', | 173 | '我们将通过《隐私政策》向您说明:\n我们在您使用我们的产品与/或服务时如何收集、使用、保存、共享和转让这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。', |
| 156 | style: TextStyle( | 174 | style: TextStyle( |
| 157 | color: MyColours.color_333333, | 175 | color: MyColours.color_333333, |
| @@ -2,8 +2,10 @@ import 'dart:async'; | @@ -2,8 +2,10 @@ import 'dart:async'; | ||
| 2 | import 'dart:convert'; | 2 | import 'dart:convert'; |
| 3 | import 'dart:io'; | 3 | import 'dart:io'; |
| 4 | 4 | ||
| 5 | +import 'package:amap_map_fluttify/amap_map_fluttify.dart'; | ||
| 5 | import 'package:common_utils/common_utils.dart'; | 6 | import 'package:common_utils/common_utils.dart'; |
| 6 | import 'package:dio/dio.dart'; | 7 | import 'package:dio/dio.dart'; |
| 8 | +import 'package:fluro/fluro.dart'; | ||
| 7 | import 'package:flutter/cupertino.dart'; | 9 | import 'package:flutter/cupertino.dart'; |
| 8 | import 'package:flutter/material.dart'; | 10 | import 'package:flutter/material.dart'; |
| 9 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 11 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| @@ -13,12 +15,14 @@ import 'package:one_key/app.dart'; | @@ -13,12 +15,14 @@ import 'package:one_key/app.dart'; | ||
| 13 | import 'package:one_key/models/checkbind_phone_model.dart'; | 15 | import 'package:one_key/models/checkbind_phone_model.dart'; |
| 14 | import 'package:one_key/models/store_info.dart'; | 16 | import 'package:one_key/models/store_info.dart'; |
| 15 | import 'package:one_key/net/dio_util.dart'; | 17 | import 'package:one_key/net/dio_util.dart'; |
| 18 | +import 'package:one_key/net/http_url.dart'; | ||
| 16 | import 'package:one_key/provider/create_store_model.dart'; | 19 | import 'package:one_key/provider/create_store_model.dart'; |
| 17 | import 'package:one_key/provider/other_login_provider.dart'; | 20 | import 'package:one_key/provider/other_login_provider.dart'; |
| 18 | import 'package:one_key/provider/user_model.dart'; | 21 | import 'package:one_key/provider/user_model.dart'; |
| 19 | import 'package:one_key/res/colors.dart'; | 22 | import 'package:one_key/res/colors.dart'; |
| 20 | import 'package:one_key/route/navigate_service.dart'; | 23 | import 'package:one_key/route/navigate_service.dart'; |
| 21 | import 'package:one_key/route/navigator_util.dart'; | 24 | import 'package:one_key/route/navigator_util.dart'; |
| 25 | +import 'package:one_key/route/routes.dart'; | ||
| 22 | import 'package:one_key/utils/dialog_util.dart'; | 26 | import 'package:one_key/utils/dialog_util.dart'; |
| 23 | import 'package:one_key/utils/utils.dart'; | 27 | import 'package:one_key/utils/utils.dart'; |
| 24 | import 'package:one_key/widgets/MyDivider.dart'; | 28 | import 'package:one_key/widgets/MyDivider.dart'; |
| @@ -28,6 +32,7 @@ import 'package:one_key/widgets/round_button.dart'; | @@ -28,6 +32,7 @@ import 'package:one_key/widgets/round_button.dart'; | ||
| 28 | import 'package:one_key/widgets/v_empty_view.dart'; | 32 | import 'package:one_key/widgets/v_empty_view.dart'; |
| 29 | import 'package:provider/provider.dart'; | 33 | import 'package:provider/provider.dart'; |
| 30 | import 'package:sign_in_with_apple/sign_in_with_apple.dart'; | 34 | import 'package:sign_in_with_apple/sign_in_with_apple.dart'; |
| 35 | +import 'package:intl/date_symbol_data_local.dart'; | ||
| 31 | 36 | ||
| 32 | class LoginPage extends StatefulWidget { | 37 | class LoginPage extends StatefulWidget { |
| 33 | @override | 38 | @override |
| @@ -61,10 +66,12 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -61,10 +66,12 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 61 | void initState() { | 66 | void initState() { |
| 62 | // TODO: implement initState | 67 | // TODO: implement initState |
| 63 | super.initState(); | 68 | super.initState(); |
| 64 | - //第一次打开应用 | ||
| 65 | 69 | ||
| 66 | - _checkWechat(); | 70 | + _initFluwx(); |
| 71 | + | ||
| 72 | + // _initFluwx(); | ||
| 67 | isLogin(); | 73 | isLogin(); |
| 74 | + | ||
| 68 | WidgetsBinding.instance.addObserver(this); | 75 | WidgetsBinding.instance.addObserver(this); |
| 69 | WidgetsBinding.instance.addPostFrameCallback((_) { | 76 | WidgetsBinding.instance.addPostFrameCallback((_) { |
| 70 | final UserModel userModel = | 77 | final UserModel userModel = |
| @@ -79,6 +86,23 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -79,6 +86,23 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 79 | }); | 86 | }); |
| 80 | } | 87 | } |
| 81 | 88 | ||
| 89 | + //初始化微信SDK | ||
| 90 | + _initFluwx() async { | ||
| 91 | + await registerWxApi( | ||
| 92 | + appId: "wx85aa3cdd0f791e65", | ||
| 93 | + doOnAndroid: true, | ||
| 94 | + doOnIOS: true, | ||
| 95 | + universalLink: "https://xt04.colorcun.com/link/OneKey/"); | ||
| 96 | + var result = await isWeChatInstalled; | ||
| 97 | + if (result != null && result) { | ||
| 98 | + App.isInstallWx = true; | ||
| 99 | + } else { | ||
| 100 | + App.isInstallWx = false; | ||
| 101 | + } | ||
| 102 | + setState(() {}); | ||
| 103 | + LogUtil.v("is installed $result"); | ||
| 104 | + } | ||
| 105 | + | ||
| 82 | //当页面离开时要清除监听器 | 106 | //当页面离开时要清除监听器 |
| 83 | @override | 107 | @override |
| 84 | void dispose() { | 108 | void dispose() { |
| @@ -136,7 +160,6 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -136,7 +160,6 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 136 | 160 | ||
| 137 | //判断是否登录 | 161 | //判断是否登录 |
| 138 | void isLogin() async { | 162 | void isLogin() async { |
| 139 | - await App.initSp(); | ||
| 140 | UserModel userModel = Provider.of<UserModel>(context, listen: false); | 163 | UserModel userModel = Provider.of<UserModel>(context, listen: false); |
| 141 | userModel.initUser(); | 164 | userModel.initUser(); |
| 142 | if (App.sp.getBool("isLogin") ?? false) { | 165 | if (App.sp.getBool("isLogin") ?? false) { |
| @@ -150,8 +173,12 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -150,8 +173,12 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 150 | 173 | ||
| 151 | ///微信登陆 | 174 | ///微信登陆 |
| 152 | 175 | ||
| 153 | - _wxLogin() { | 176 | + _wxLogin() async { |
| 177 | + await initializeDateFormatting(); | ||
| 154 | sendWeChatAuth(scope: "snsapi_userinfo"); | 178 | sendWeChatAuth(scope: "snsapi_userinfo"); |
| 179 | + await AmapService.instance.init( | ||
| 180 | + iosKey: 'e373581528f8fd901c01dfbda236159e', | ||
| 181 | + androidKey: 'dbced781d0acd36184d5b4b54da7188d'); | ||
| 155 | } | 182 | } |
| 156 | 183 | ||
| 157 | ///获取微信登录code | 184 | ///获取微信登录code |
| @@ -237,6 +264,15 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -237,6 +264,15 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 237 | // } | 264 | // } |
| 238 | // } | 265 | // } |
| 239 | 266 | ||
| 267 | + initDio() { | ||
| 268 | + DioUtil.openDebug(); | ||
| 269 | + BaseOptions options = DioUtil.getDefOptions(); | ||
| 270 | + options.baseUrl = HttpUrl.server_address; | ||
| 271 | + HttpConfig config = new HttpConfig( | ||
| 272 | + options: options, status: "ret", code: "ret", msg: "msg", data: "data"); | ||
| 273 | + DioUtil().setConfig(config); | ||
| 274 | + } | ||
| 275 | + | ||
| 240 | /* | 276 | /* |
| 241 | 苹果登录获取用户信息 | 277 | 苹果登录获取用户信息 |
| 242 | */ | 278 | */ |
| @@ -684,6 +720,9 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -684,6 +720,9 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 684 | setState(() { | 720 | setState(() { |
| 685 | _check = !_check; | 721 | _check = !_check; |
| 686 | }); | 722 | }); |
| 723 | + if (_check) { | ||
| 724 | + initDio(); | ||
| 725 | + } | ||
| 687 | }, | 726 | }, |
| 688 | child: Container( | 727 | child: Container( |
| 689 | alignment: Alignment.topCenter, | 728 | alignment: Alignment.topCenter, |
| @@ -777,6 +816,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -777,6 +816,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 777 | if (!_check) { | 816 | if (!_check) { |
| 778 | DialogUtil.openAlertDialogLogin(context, 500, | 817 | DialogUtil.openAlertDialogLogin(context, 500, |
| 779 | onTap: () { | 818 | onTap: () { |
| 819 | + initDio(); | ||
| 780 | Navigator.pop(context); | 820 | Navigator.pop(context); |
| 781 | _wxLogin(); | 821 | _wxLogin(); |
| 782 | }); | 822 | }); |
| @@ -814,6 +854,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -814,6 +854,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 814 | if (!_check) { | 854 | if (!_check) { |
| 815 | DialogUtil.openAlertDialogLogin(context, 500, | 855 | DialogUtil.openAlertDialogLogin(context, 500, |
| 816 | onTap: () { | 856 | onTap: () { |
| 857 | + initDio(); | ||
| 817 | Navigator.pop(context); | 858 | Navigator.pop(context); |
| 818 | NavigatorUtil.goAccountLoginPage(context); | 859 | NavigatorUtil.goAccountLoginPage(context); |
| 819 | }); | 860 | }); |
| @@ -860,6 +901,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -860,6 +901,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 860 | if (!_check) { | 901 | if (!_check) { |
| 861 | DialogUtil.openAlertDialogLogin(context, 500, | 902 | DialogUtil.openAlertDialogLogin(context, 500, |
| 862 | onTap: () { | 903 | onTap: () { |
| 904 | + initDio(); | ||
| 863 | Navigator.pop(context); | 905 | Navigator.pop(context); |
| 864 | _iosLogin(value); | 906 | _iosLogin(value); |
| 865 | }); | 907 | }); |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | 2 | ||
| 3 | -import 'package:device_info/device_info.dart'; | 3 | +// import 'package:device_info/device_info.dart'; |
| 4 | import 'package:dio/dio.dart'; | 4 | import 'package:dio/dio.dart'; |
| 5 | import 'package:flutter/material.dart'; | 5 | import 'package:flutter/material.dart'; |
| 6 | import 'package:one_key/net/dio_util.dart'; | 6 | import 'package:one_key/net/dio_util.dart'; |
| @@ -78,37 +78,37 @@ class _WebPageState extends State<WebPage> { | @@ -78,37 +78,37 @@ class _WebPageState extends State<WebPage> { | ||
| 78 | _init(); | 78 | _init(); |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | - Future<bool> _checkPermission() async { | ||
| 82 | - DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); | ||
| 83 | - AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; | ||
| 84 | - if (Platform.isAndroid && androidInfo.version.sdkInt <= 28) { | ||
| 85 | - final status = await Permission.storage.status; | ||
| 86 | - if (status != PermissionStatus.granted) { | ||
| 87 | - final result = await Permission.storage.request(); | ||
| 88 | - if (result == PermissionStatus.granted) { | ||
| 89 | - return true; | ||
| 90 | - } | ||
| 91 | - } else { | ||
| 92 | - return true; | ||
| 93 | - } | ||
| 94 | - } else { | ||
| 95 | - return true; | ||
| 96 | - } | ||
| 97 | - return false; | ||
| 98 | - } | 81 | + // Future<bool> _checkPermission() async { |
| 82 | + // DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); | ||
| 83 | + // AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; | ||
| 84 | + // if (Platform.isAndroid && androidInfo.version.sdkInt <= 28) { | ||
| 85 | + // final status = await Permission.storage.status; | ||
| 86 | + // if (status != PermissionStatus.granted) { | ||
| 87 | + // final result = await Permission.storage.request(); | ||
| 88 | + // if (result == PermissionStatus.granted) { | ||
| 89 | + // return true; | ||
| 90 | + // } | ||
| 91 | + // } else { | ||
| 92 | + // return true; | ||
| 93 | + // } | ||
| 94 | + // } else { | ||
| 95 | + // return true; | ||
| 96 | + // } | ||
| 97 | + // return false; | ||
| 98 | + // } | ||
| 99 | 99 | ||
| 100 | - Future<bool> checkPermissionStorage() async { | ||
| 101 | - var status = await Permission.storage.status; | ||
| 102 | - if (!status.isGranted) { | ||
| 103 | - status = await Permission.storage.request(); | ||
| 104 | - if (status.isGranted) { | ||
| 105 | - return true; | ||
| 106 | - } | ||
| 107 | - } else { | ||
| 108 | - return true; | ||
| 109 | - } | ||
| 110 | - return false; | ||
| 111 | - } | 100 | + // Future<bool> checkPermissionStorage() async { |
| 101 | + // var status = await Permission.storage.status; | ||
| 102 | + // if (!status.isGranted) { | ||
| 103 | + // status = await Permission.storage.request(); | ||
| 104 | + // if (status.isGranted) { | ||
| 105 | + // return true; | ||
| 106 | + // } | ||
| 107 | + // } else { | ||
| 108 | + // return true; | ||
| 109 | + // } | ||
| 110 | + // return false; | ||
| 111 | + // } | ||
| 112 | 112 | ||
| 113 | _init() async { | 113 | _init() async { |
| 114 | // WidgetsFlutterBinding.ensureInitialized(); | 114 | // WidgetsFlutterBinding.ensureInitialized(); |
| 1 | import 'dart:io'; | 1 | import 'dart:io'; |
| 2 | 2 | ||
| 3 | -import 'package:amap_map_fluttify/amap_map_fluttify.dart'; | 3 | + |
| 4 | import 'package:cached_network_image/cached_network_image.dart'; | 4 | import 'package:cached_network_image/cached_network_image.dart'; |
| 5 | import 'package:flutter/material.dart'; | 5 | import 'package:flutter/material.dart'; |
| 6 | import 'package:flutter_native_image/flutter_native_image.dart'; | 6 | import 'package:flutter_native_image/flutter_native_image.dart'; |
| 1 | -import 'package:amap_map_fluttify/amap_map_fluttify.dart'; | 1 | + |
| 2 | import 'package:cached_network_image/cached_network_image.dart'; | 2 | import 'package:cached_network_image/cached_network_image.dart'; |
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | import 'package:flutter_easyrefresh/easy_refresh.dart'; | 4 | import 'package:flutter_easyrefresh/easy_refresh.dart'; |
| @@ -10,6 +10,15 @@ Future<bool> checkContactPermission() async { | @@ -10,6 +10,15 @@ Future<bool> checkContactPermission() async { | ||
| 10 | } | 10 | } |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | +// Future<bool> checkReasPhoneStatePermission() async { | ||
| 14 | +// PermissionStatus permissionStatus = await Permission..status; | ||
| 15 | +// if (permissionStatus == PermissionStatus.granted) { | ||
| 16 | +// return true; | ||
| 17 | +// } else { | ||
| 18 | +// return false; | ||
| 19 | +// } | ||
| 20 | +// } | ||
| 21 | + | ||
| 13 | Future<bool> checkPermission(Permission permissionGroup) async { | 22 | Future<bool> checkPermission(Permission permissionGroup) async { |
| 14 | PermissionStatus permissionStatus = await permissionGroup.status; | 23 | PermissionStatus permissionStatus = await permissionGroup.status; |
| 15 | if (permissionStatus == PermissionStatus.granted) { | 24 | if (permissionStatus == PermissionStatus.granted) { |
| @@ -294,7 +294,14 @@ packages: | @@ -294,7 +294,14 @@ packages: | ||
| 294 | name: device_info | 294 | name: device_info |
| 295 | url: "https://pub.flutter-io.cn" | 295 | url: "https://pub.flutter-io.cn" |
| 296 | source: hosted | 296 | source: hosted |
| 297 | - version: "0.4.2+6" | 297 | + version: "2.0.3" |
| 298 | + device_info_platform_interface: | ||
| 299 | + dependency: transitive | ||
| 300 | + description: | ||
| 301 | + name: device_info_platform_interface | ||
| 302 | + url: "https://pub.flutter-io.cn" | ||
| 303 | + source: hosted | ||
| 304 | + version: "2.0.0" | ||
| 298 | dio: | 305 | dio: |
| 299 | dependency: "direct main" | 306 | dependency: "direct main" |
| 300 | description: | 307 | description: |
| @@ -383,7 +390,7 @@ packages: | @@ -383,7 +390,7 @@ packages: | ||
| 383 | name: flutter_bugly | 390 | name: flutter_bugly |
| 384 | url: "https://pub.flutter-io.cn" | 391 | url: "https://pub.flutter-io.cn" |
| 385 | source: hosted | 392 | source: hosted |
| 386 | - version: "0.2.9" | 393 | + version: "0.4.4" |
| 387 | flutter_cache_manager: | 394 | flutter_cache_manager: |
| 388 | dependency: transitive | 395 | dependency: transitive |
| 389 | description: | 396 | description: |
| @@ -62,7 +62,7 @@ dependencies: | @@ -62,7 +62,7 @@ dependencies: | ||
| 62 | # sqlite数据库 | 62 | # sqlite数据库 |
| 63 | sqflite: ^1.2.2+1 | 63 | sqflite: ^1.2.2+1 |
| 64 | # Bugly | 64 | # Bugly |
| 65 | - flutter_bugly: ^0.2.8 | 65 | + flutter_bugly: ^0.4.4 |
| 66 | # 设置状态栏颜色 | 66 | # 设置状态栏颜色 |
| 67 | flutter_statusbarcolor: ^0.2.3 | 67 | flutter_statusbarcolor: ^0.2.3 |
| 68 | # 语音播放器 | 68 | # 语音播放器 |
| @@ -90,7 +90,7 @@ dependencies: | @@ -90,7 +90,7 @@ dependencies: | ||
| 90 | # 获取应用版本信息 | 90 | # 获取应用版本信息 |
| 91 | package_info: ^0.4.0+18 | 91 | package_info: ^0.4.0+18 |
| 92 | # 获取设备信息 | 92 | # 获取设备信息 |
| 93 | - device_info: ^0.4.2+4 | 93 | + device_info: ^2.0.3 |
| 94 | flutter_sms: ^2.1.1 | 94 | flutter_sms: ^2.1.1 |
| 95 | 95 | ||
| 96 | 96 |
-
Please register or login to post a comment