From 26a9982e9b8b682ea6cd26245bde39d46a9f2704 Mon Sep 17 00:00:00 2001 From: YangYuhao Date: Thu, 6 Jul 2023 09:25:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=83=A8=E5=AD=98=E5=82=A8=20?= =?UTF-8?q?=E5=B0=81=E8=A3=85=20=20=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle_app/lib/app/account/logic.dart | 15 ++- circle_app/lib/app/call_out/logic.dart | 21 +-- circle_app/lib/app/call_out/view.dart | 4 +- .../app/circle/widgets/info_list_view.dart | 84 +++++++----- .../lib/app/circle/widgets/list_logic.dart | 21 ++- circle_app/lib/app/friendslist/view.dart | 2 + circle_app/lib/app/home/logic.dart | 5 + .../app/login/complete_material/logic.dart | 26 +++- circle_app/lib/app/login/login/logic.dart | 14 +- circle_app/lib/app/minefragment/logic.dart | 88 ++++++++----- circle_app/lib/app/minefragment/view.dart | 123 +++++++++++------- circle_app/lib/app/photoinfo/logic.dart | 37 +++--- circle_app/lib/app/photoinfo/state.dart | 7 +- circle_app/lib/app/photoinfo/view.dart | 25 ++-- circle_app/lib/app/splash/logic.dart | 14 +- circle_app/lib/app/userinfo/logic.dart | 81 +++++++----- circle_app/lib/app/userinfo/view.dart | 1 + circle_app/lib/network/dio_manager.dart | 16 ++- .../lib/util/SharedPreferencesHelper.dart | 66 ++++++++++ circle_app/lib/util/device.dart | 19 ++- circle_app/lib/util/util.dart | 9 +- 21 files changed, 450 insertions(+), 228 deletions(-) create mode 100644 circle_app/lib/util/SharedPreferencesHelper.dart diff --git a/circle_app/lib/app/account/logic.dart b/circle_app/lib/app/account/logic.dart index 743a919..4a3a068 100644 --- a/circle_app/lib/app/account/logic.dart +++ b/circle_app/lib/app/account/logic.dart @@ -1,6 +1,7 @@ import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import '../../util/SharedPreferencesHelper.dart'; import 'state.dart'; class AccountLogic extends GetxController { @@ -10,9 +11,15 @@ class AccountLogic extends GetxController { void onInit() async{ super.onInit(); - SharedPreferences prefs = await SharedPreferences.getInstance(); - photo = prefs.getString("photo")??""; - print(photo.toString()); - update(); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + // 在这里使用 SharedPreferences + photo = sharedPreferences.getString(SharedPreferencesHelper.PHOTO); + print(photo.toString()); + update(); + }); + + + + } } diff --git a/circle_app/lib/app/call_out/logic.dart b/circle_app/lib/app/call_out/logic.dart index c008bca..566c4dc 100644 --- a/circle_app/lib/app/call_out/logic.dart +++ b/circle_app/lib/app/call_out/logic.dart @@ -20,6 +20,7 @@ import '../../common/errorcode.dart'; import '../../network/api.dart'; import '../../network/dio_manager.dart'; import '../../router/app_routers.dart'; +import '../../util/SharedPreferencesHelper.dart'; import '../../util/qiniu.dart'; import '../login/complete_material/logic.dart'; import '../select_circle/logic.dart'; @@ -52,11 +53,13 @@ class Call_outLogic extends GetxController { // print(myConfigData.name); numbers.addAll(myConfigData); circleName = numbers[0].name; - SharedPreferences prefs = await SharedPreferences.getInstance(); - vip = prefs.getInt("vip") ?? 0; - if (vip == 2) { - isCheck = true; - } + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + vip = sharedPreferences.getInt(SharedPreferencesHelper.VIP); + if (vip == 2) { + isCheck = true; + } + }); + update(); } @@ -143,9 +146,9 @@ class Call_outLogic extends GetxController { // Navigator.pop(Get.context!, numbers); Get.back(); } else if (beandata.code == 30503) { - if (beandata.data == null) { - return; - } + // if (beandata.data == null) { + // return; + // } showToast(beandata.msg); var callOutBean = BaseResponse>.fromJson( data, @@ -368,7 +371,7 @@ class Call_outLogic extends GetxController { } SmartDialog.showLoading(); var path = await getApplicationSupportDirectoryPath(); - compressVideo(pickedFile!.path, path, (result) async { + compressVideo(pickedFile.path, path, (result) async { print(result); videoPlayerController = VideoPlayerController.file( File(result), diff --git a/circle_app/lib/app/call_out/view.dart b/circle_app/lib/app/call_out/view.dart index ee25469..5ee8abb 100644 --- a/circle_app/lib/app/call_out/view.dart +++ b/circle_app/lib/app/call_out/view.dart @@ -83,9 +83,7 @@ class Call_outPage extends StatelessWidget { Color(0xffD739EA) ])), child: Text( - logic.circleName != null - ? logic.circleName - : '', + logic.circleName ?? '', style: TextStyle( color: Colors.white, fontSize: 12.sp), diff --git a/circle_app/lib/app/circle/widgets/info_list_view.dart b/circle_app/lib/app/circle/widgets/info_list_view.dart index c0d55a0..c7d795c 100644 --- a/circle_app/lib/app/circle/widgets/info_list_view.dart +++ b/circle_app/lib/app/circle/widgets/info_list_view.dart @@ -1,4 +1,3 @@ -import 'dart:ffi'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:circle_app/app/circle/logic.dart'; @@ -12,8 +11,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; -import 'package:get/get.dart'; -import 'package:shared_preferences/shared_preferences.dart'; + +import '../../../util/SharedPreferencesHelper.dart'; class InfoListView extends StatefulWidget { // Get.lazyPut(() => ListLogic()); @@ -141,14 +140,19 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie } void pushHomePage(Lists bean, String cicleId) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - int userId = prefs.getInt("userId") ?? 0; - if (bean.user!.id == userId) { - Get.toNamed(AppRoutes.UserInfoActivity); - } else { - Get.toNamed(AppRoutes.UserInfoActivity, - arguments: bean.user!.id!.toString()); - } + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + int userId = sharedPreferences.getInt(SharedPreferencesHelper.USERID); + if (bean.user!.id == userId) { + Get.toNamed(AppRoutes.UserInfoActivity); + } else { + Get.toNamed(AppRoutes.UserInfoActivity, + arguments: bean.user!.id!.toString()); + } + }); + + + + // if (bean.isQueen) { // showJoinCiclePiker(cicleId); @@ -166,9 +170,10 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie @override Widget build(BuildContext context) { TextSpan descSpan; + // widget.bean.intro = widget.bean.intro+widget.bean.intro+widget.bean.intro+widget.bean.intro+widget.bean.intro; TextSpan span; - if (widget.bean.intro.length > 60) { - String truncatedText = widget.bean.intro.substring(0, 60); + if (widget.bean.intro.length > 20) { + String truncatedText = widget.bean.intro.substring(0, 60)+"..."; descSpan = TextSpan( text: truncatedText, style: TextStyle(color: Colors.white, fontSize: 10.sp), @@ -192,9 +197,12 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie List widgets = []; int i = 0; urlList.forEach((element) { + if(widgets.length>2){ + return; + } widgets.add(Positioned( left: 15.sp * i, - child: circleWidget(element.avatar), + child: circleWidget(element.avatar,element.id.toString()), )); i++; }); @@ -266,7 +274,12 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie ])), ), ), - Container( + GestureDetector( + behavior:HitTestBehavior.opaque, + onTap: (){ + showToast("点个鸡毛,星哥还没做"); + Get.toNamed(AppRoutes.FriendsActivity,arguments: '3'); + }, child: Row( children: [ Row( @@ -285,7 +298,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie width: 8.sp, ), Text( - '${convertToTenThousand(widget.bean.viewTotal)}圈友', + '${convertToTenThousand(widget.bean.joinTotal)}圈友', style: TextStyle( color: Colors.white, fontSize: 12.sp), @@ -381,7 +394,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie height: 4.sp, ), Text( - '${convertToTenThousand(widget.bean.joinTotal)}人看过', + '${convertToTenThousand(widget.bean.viewTotal)}人看过', textAlign: TextAlign.left, style: TextStyle( color: Color(0xff03FEFB), @@ -465,21 +478,17 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie ), ), Container( - margin: EdgeInsets.only(top: 24.sp), - child: Column( - children: [ - Container( - margin: EdgeInsets.only( - top: 12.sp, left: 14.sp, right: 14.sp), - alignment: Alignment.center, - child: Text( - msg, - textAlign: TextAlign.center, - style: TextStyle( - color: Color(0xCCF7FAFA), fontSize: 16.sp), - ), - ), - ], + margin: EdgeInsets.only(top: 24.sp,bottom: 24.sp), + child: Container( + margin: EdgeInsets.only( + top: 12.sp, left: 14.sp, right: 14.sp), + alignment: Alignment.center, + child: SingleChildScrollView(child: Text( + msg, + textAlign: TextAlign.center, + style: TextStyle( + color: Color(0xCCF7FAFA), fontSize: 16.sp), + ),), ), ) ], @@ -508,7 +517,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie onTap: () { pushOtherPeopleHomePage(element.id.toString()); }, - child: circleWidget(element.avatar!, width: 24), + child: circleWidget(element.avatar!,element.id.toString(), width: 24), ), )); index++; @@ -822,7 +831,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie onTap: () { pushOtherPeopleHomePage(element.id.toString()); }, - child: circleWidget(element.avatar!, width: 24), + child: circleWidget(element.avatar!,element.id.toString(), width: 24), ), )); index++; @@ -1082,8 +1091,11 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie )); } - circleWidget(String url, {double width = 30}) { + circleWidget(String url, String userId,{double width = 30}) { return GestureDetector( + onTap: (){ + Get.toNamed(AppRoutes.UserInfoActivity, arguments: userId); + }, child: Stack( alignment: Alignment.center, children: [ @@ -1096,7 +1108,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie url, width: (width - 1).sp, height: (width - 1).sp, - fit: BoxFit.fill, + fit: BoxFit.cover, ), ) ], diff --git a/circle_app/lib/app/circle/widgets/list_logic.dart b/circle_app/lib/app/circle/widgets/list_logic.dart index 8a90ecd..66e770d 100644 --- a/circle_app/lib/app/circle/widgets/list_logic.dart +++ b/circle_app/lib/app/circle/widgets/list_logic.dart @@ -8,6 +8,8 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import '../../../util/SharedPreferencesHelper.dart'; + class ListLogic extends GetxController { int callOutPage = 1; @@ -77,13 +79,18 @@ class ListLogic extends GetxController { } void pushHomePage(Lists bean,String cicleId) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - int userId = prefs.getInt("userId")??0; - if(bean.user!.id==userId){ - Get.toNamed(AppRoutes.UserInfoActivity); - }else{ - Get.toNamed(AppRoutes.UserInfoActivity, arguments: bean.user!.id!.toString()); - } + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + int userId = sharedPreferences.getInt(SharedPreferencesHelper.USERID); + if(bean.user!.id==userId){ + Get.toNamed(AppRoutes.UserInfoActivity); + }else{ + Get.toNamed(AppRoutes.UserInfoActivity, arguments: bean.user!.id!.toString()); + } + }); + + + + // if (bean.isQueen) { // showJoinCiclePiker(cicleId); diff --git a/circle_app/lib/app/friendslist/view.dart b/circle_app/lib/app/friendslist/view.dart index 96d297f..d65efc9 100644 --- a/circle_app/lib/app/friendslist/view.dart +++ b/circle_app/lib/app/friendslist/view.dart @@ -182,6 +182,8 @@ class FriendslistPage extends StatelessWidget { return "喜欢我的"; case "2": return "最近访客"; + case "3": + return "最近来访"; default: return ""; } diff --git a/circle_app/lib/app/home/logic.dart b/circle_app/lib/app/home/logic.dart index 8e2cd93..62dc663 100644 --- a/circle_app/lib/app/home/logic.dart +++ b/circle_app/lib/app/home/logic.dart @@ -1,4 +1,5 @@ import 'package:circle_app/app/circle/logic.dart'; +import 'package:circle_app/app/minefragment/logic.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -39,6 +40,10 @@ class HomeLogic extends GetxController { if (index == 1) { final logic = Get.put(CircleLogic()); logic.loadCirclePeopleData(); + }else + if(index == 2){ + final logic = Get.put(MinefragmentLogic()); + logic.getMode(); } update(); } diff --git a/circle_app/lib/app/login/complete_material/logic.dart b/circle_app/lib/app/login/complete_material/logic.dart index 3c612ca..779fc13 100644 --- a/circle_app/lib/app/login/complete_material/logic.dart +++ b/circle_app/lib/app/login/complete_material/logic.dart @@ -11,6 +11,7 @@ import '../../../common/config.dart'; import '../../../network/api.dart'; import '../../../util/device.dart'; import '../../../util/qiniu.dart'; +import '../../minefragment/logic.dart'; import '../../select_circle/logic.dart'; import '../../userinfo/logic.dart'; import 'state.dart'; @@ -46,7 +47,7 @@ class Complete_materialLogic extends GetxController { state.sex = getGenderContent(userInfoBean!.gender); state.genderId = userInfoBean!.gender.toString(); state.age = userInfoBean!.age.toString(); - state.brithday = userInfoBean!.age.toString(); + state.brithday = userInfoBean!.birthday.toString(); state.role = getRoleContent(userInfoBean!.role); state.roleId = userInfoBean!.role.toString(); state.orientation = getOrientationContent(userInfoBean!.orientation); @@ -153,7 +154,7 @@ class Complete_materialLogic extends GetxController { showToast('请上传头像'); return; } - LatLng location = await getLocation(); + // LatLng location = await getLocation(); List interestsList = []; numbers.forEach((element) { interestsList.add(element.id); @@ -165,8 +166,8 @@ class Complete_materialLogic extends GetxController { 'role': state.roleId, //Int 角色 'interests': interestsList, //兴趣 'orientation': state.orientationId, //Int 爱好 - 'lat': location.latitude, - 'lng': location.longitude, + // 'lat': location.latitude, + // 'lng': location.longitude, 'nickname': state.textEditingController.text, 'signature': state.descEditingController.text, }); @@ -215,7 +216,7 @@ class Complete_materialLogic extends GetxController { return; } //TODO 强制获取经纬度 - LatLng location = await getLocation(); + // LatLng location = await getLocation(); List interestsList = []; numbers.forEach((element) { interestsList.add(element.id); @@ -227,14 +228,25 @@ class Complete_materialLogic extends GetxController { 'role': state.roleId, //Int 角色 'interests': interestsList, //兴趣 'orientation': state.orientationId, //Int 爱好 - 'lat': location.latitude, - 'lng': location.longitude, + // 'lat': location.latitude, + // 'lng': location.longitude, 'nickname': state.textEditingController.text, 'signature': state.descEditingController.text, }); var bean = BaseResponse.fromJson(data, (data) => data); if (bean.code == 200) { + var mineFragment = Get.find(); + mineFragment.avatar = headUrl; + mineFragment.name = state.textEditingController.text; + mineFragment.gender = int.parse(state.genderId); + mineFragment.role = int.parse(state.roleId); + mineFragment.age = int.parse(state.age); + mineFragment.orientation = int.parse(state.orientationId); + mineFragment.update(); Get.back(); + + + }else{ showToast(bean.msg); } diff --git a/circle_app/lib/app/login/login/logic.dart b/circle_app/lib/app/login/login/logic.dart index 766a72f..8b41dd1 100644 --- a/circle_app/lib/app/login/login/logic.dart +++ b/circle_app/lib/app/login/login/logic.dart @@ -11,6 +11,7 @@ import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../../network/api.dart'; +import '../../../util/SharedPreferencesHelper.dart'; import 'state.dart'; class LoginLogic extends GetxController { @@ -70,14 +71,18 @@ class LoginLogic extends GetxController { }); var bean = BaseResponse.fromJson(data, (data) => LoginData.fromJson(data)); if (bean.code == 200) { - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString('Authorization', bean.data!.Authorization.toString()); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); + }); + + Get.offNamed(AppRoutes.Home); return; } else if (bean.code == 30002) { - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString('Authorization', bean.data!.Authorization.toString()); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); + }); Get.offNamed(AppRoutes.Complete_materialPage); return; @@ -93,7 +98,6 @@ class LoginLogic extends GetxController { // String msg = jsonData['msg']; // // String authorization = jsonData['data']['Authorization']; - // SharedPreferences prefs = await SharedPreferences.getInstance(); // prefs.setString('Authorization', authorization); // // if (code == 200) { diff --git a/circle_app/lib/app/minefragment/logic.dart b/circle_app/lib/app/minefragment/logic.dart index d3e4968..edf5e3a 100644 --- a/circle_app/lib/app/minefragment/logic.dart +++ b/circle_app/lib/app/minefragment/logic.dart @@ -3,6 +3,7 @@ import 'package:get/get.dart'; import '../../network/api.dart'; import '../../network/dio_manager.dart'; import '../../router/app_routers.dart'; +import '../../util/SharedPreferencesHelper.dart'; import '../../util/util.dart'; import '../userinfo/logic.dart'; import 'state.dart'; @@ -17,45 +18,65 @@ class MinefragmentLogic extends GetxController { var like_me_count = 0; var recent_visit_count = 0; - num like_me_count_new = 0; num recent_visit_count_new = 0; + String avatar = ""; + String name = ""; + int gender = -1; + int role = -1; + int age = -1; + int orientation = -1; + + String enterHomeInfoMsg = "进入主页"; @override void onInit() async { super.onInit(); + getMode(); + } + + getMode() async { var data = await DioManager.instance.get(url: Api.getUserMine); - var bean = BaseResponse.fromJson( - data, (data) => ResponseBean.fromJson(data)); + var bean = BaseResponse.fromJson( + data, (data) => MineResponseBean.fromJson(data)); if (bean.isSuccess()) { - SharedPreferences prefs = await SharedPreferences.getInstance(); - int likeMeCount = prefs.getInt("likeMeCount") ?? 0; - int recentVisitCount = prefs.getInt("recentVisitCount") ?? 0; - prefs.setString("photo", bean.data.phone); + like_count = bean.data.likeCount ?? 0; + like_me_count = bean.data.likeMeCount ?? 0; + recent_visit_count = bean.data.recentVisitCount ?? 0; + SharedPreferences sharedPreferences = + await SharedPreferences.getInstance(); - like_count = bean.data.likeCount??0; - like_me_count = bean.data.likeMeCount??0; - recent_visit_count = bean.data.recentVisitCount??0; + int likeMeCount = sharedPreferences.getInt(SharedPreferencesHelper.LIKEMECOUNT)??0; + int recentVisitCount = sharedPreferences.getInt(SharedPreferencesHelper.RECENTVISITCOUNT)??0; + sharedPreferences.setString(SharedPreferencesHelper.PHOTO, bean.data.phone); + like_me_count_new = likeMeCount - like_me_count; + print("***************"); + print("$likeMeCount-$like_me_count=$like_me_count_new"); + recent_visit_count_new = recentVisitCount - recent_visit_count; // like_me_count_new = recentVisitCount.toInt() - bean.data.likeMeCount.toInt(); - like_me_count_new = likeMeCount - like_me_count; - print("***************"); - print(likeMeCount.toString()+"-"+like_me_count.toString()+"="+like_me_count_new.toString()); - - recent_visit_count_new = recentVisitCount-recent_visit_count; - - userInfoBean = bean.data.user; if (userInfoBean != null) { + avatar = userInfoBean!.avatar; + sharedPreferences.setString(SharedPreferencesHelper.AVATAR, avatar); + name = userInfoBean!.nickname; + sharedPreferences.setString(SharedPreferencesHelper.NAME, name); + gender = userInfoBean!.gender; + role = userInfoBean!.role; + age = userInfoBean!.age; + orientation = userInfoBean!.orientation; isVip = userInfoBean!.vip; - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setInt('vip', isVip); - prefs.setInt('userId', userInfoBean!.id); - ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, - userInfoBean!.role, userInfoBean!.orientation); + + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setInt(SharedPreferencesHelper.VIP, isVip); + sharedPreferences.setInt( + SharedPreferencesHelper.USERID, userInfoBean!.id); + }); + + ageMsg = getAgeCOntent(gender, age, role, orientation); } update(); @@ -122,7 +143,7 @@ class User { } } -class ResponseBean { +class MineResponseBean { User user; int likeCount; int likeMeCount; @@ -131,18 +152,17 @@ class ResponseBean { int? vipExpireDays; String phone; - ResponseBean({ - required this.user, - required this.likeCount, - required this.likeMeCount, - required this.recentVisitCount, - this.vipExpireDate, - this.vipExpireDays, - required this.phone - }); + MineResponseBean( + {required this.user, + required this.likeCount, + required this.likeMeCount, + required this.recentVisitCount, + this.vipExpireDate, + this.vipExpireDays, + required this.phone}); - factory ResponseBean.fromJson(Map json) { - return ResponseBean( + factory MineResponseBean.fromJson(Map json) { + return MineResponseBean( user: User.fromJson(json['user']), likeCount: json['like_count'], phone: json['phone'], diff --git a/circle_app/lib/app/minefragment/view.dart b/circle_app/lib/app/minefragment/view.dart index 1b049cc..2273041 100644 --- a/circle_app/lib/app/minefragment/view.dart +++ b/circle_app/lib/app/minefragment/view.dart @@ -5,6 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import '../../util/SharedPreferencesHelper.dart'; import '../../util/util.dart'; import 'logic.dart'; @@ -37,7 +38,7 @@ class MinefragmentPage extends StatelessWidget { ), child: Padding( padding: EdgeInsets.only( - top: 20.0 + statusBarHeight, + top: 20.0 + statusBarHeight.sp, left: 11.sp, right: 11.sp, ), @@ -77,7 +78,7 @@ class MinefragmentPage extends StatelessWidget { }, child: Container( // color: Colors.red, - margin: EdgeInsets.only(top: 18), + margin: EdgeInsets.only(top: 18.sp), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -85,10 +86,10 @@ class MinefragmentPage extends StatelessWidget { children: [ Image( image: AssetImage(getHomeImage("mine_setup")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), - SizedBox(width: 10), + SizedBox(width: 10.sp), Text( "设置", style: TextStyle(color: Colors.white), @@ -99,8 +100,8 @@ class MinefragmentPage extends StatelessWidget { children: [ Image( image: AssetImage(getHomeImage("icon_in")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), ], ) @@ -118,7 +119,7 @@ class MinefragmentPage extends StatelessWidget { // controller.state.hearUrl }, child: Container( - margin: EdgeInsets.only(top: 18), + margin: EdgeInsets.only(top: 18.sp), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -126,10 +127,10 @@ class MinefragmentPage extends StatelessWidget { children: [ Image( image: AssetImage(getHomeImage("mine_help")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), - SizedBox(width: 10), + SizedBox(width: 10.sp), Text( "帮助与反馈", style: TextStyle(color: Colors.white), @@ -140,8 +141,8 @@ class MinefragmentPage extends StatelessWidget { children: [ Image( image: AssetImage(getHomeImage("icon_in")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), ], ) @@ -158,7 +159,7 @@ class MinefragmentPage extends StatelessWidget { Get.toNamed(AppRoutes.MyCircle,arguments: ''); }, child: Container( - margin: EdgeInsets.only(top: 18), + margin: EdgeInsets.only(top: 18.sp), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -166,10 +167,10 @@ class MinefragmentPage extends StatelessWidget { children: [ Image( image: AssetImage(getHomeImage("mine_circle")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), - SizedBox(width: 10), + SizedBox(width: 10.sp), Text( "我的圈子", style: TextStyle(color: Colors.white), @@ -184,8 +185,8 @@ class MinefragmentPage extends StatelessWidget { ), Image( image: AssetImage(getHomeImage("icon_in")), - width: 24, - height: 24, + width: 24.sp, + height: 24.sp, ), ], ) @@ -199,15 +200,14 @@ class MinefragmentPage extends StatelessWidget { return Center( child: Container( width: Get.width, - height: 85, - margin: EdgeInsets.only(left: 30, right: 30), + height: 85.sp, + margin: EdgeInsets.only(left: 30.sp, right: 30.sp), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { - print("我喜欢的"); Get.toNamed(AppRoutes.FriendsActivity, arguments: "0"); }, child: Container( @@ -219,7 +219,7 @@ class MinefragmentPage extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), SizedBox(height: 4.sp), Text( @@ -234,7 +234,7 @@ class MinefragmentPage extends StatelessWidget { ], color: Color.fromARGB(255, 247, 250, 250), fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), ], ), @@ -246,9 +246,9 @@ class MinefragmentPage extends StatelessWidget { logic.like_me_count_new = 0; logic.update(); if(null!=logic.like_me_count){ - - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setInt("likeMeCount", logic.like_me_count); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setInt(SharedPreferencesHelper.LIKEMECOUNT, logic.like_me_count); + }); } Get.toNamed(AppRoutes.FriendsActivity, arguments: "1"); }, @@ -265,7 +265,7 @@ class MinefragmentPage extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), ), ], @@ -286,7 +286,7 @@ class MinefragmentPage extends StatelessWidget { ], color: Color.fromARGB(255, 247, 250, 250), fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), ], ), @@ -306,8 +306,12 @@ class MinefragmentPage extends StatelessWidget { onTap: () async{ logic.recent_visit_count_new = 0; if(null!=logic.recent_visit_count){ - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setInt("recentVisitCount", logic.recent_visit_count); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setInt(SharedPreferencesHelper.RECENTVISITCOUNT, logic.recent_visit_count); + }); + + + } Get.toNamed(AppRoutes.FriendsActivity, arguments: "2"); @@ -326,7 +330,7 @@ class MinefragmentPage extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), ), ], @@ -347,7 +351,7 @@ class MinefragmentPage extends StatelessWidget { ], color: Color.fromARGB(255, 247, 250, 250), fontSize: 16.sp, - fontWeight: FontWeight.bold), + ), ), ], ), @@ -377,11 +381,32 @@ class MinefragmentPage extends StatelessWidget { }, child: Container( width: Get.width, - height: 65, + height: 65.sp, child: Row( children: [ Center( - child: _buildAvatar1(logic), + child: Stack( + alignment: Alignment.center, + children: [ + Container( + width: 68.sp, + height: 68.sp, + decoration: const BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + ), + SizedBox( + width: 65.sp, + height: 65.sp, + child: _buildAvatar1(logic), + ) + ], + ), ), Expanded( child: Container( @@ -403,6 +428,8 @@ class MinefragmentPage extends StatelessWidget { } Widget _buildAvatar1(MinefragmentLogic logic) { + + return ClipOval( child: GestureDetector( onTap: () { @@ -422,7 +449,8 @@ class MinefragmentPage extends StatelessWidget { height: 65.sp, ): CachedNetworkImage( fit: BoxFit.cover, - imageUrl: logic.userInfoBean!=null ? logic.userInfoBean!.avatar: "", + placeholder: null, + imageUrl: logic.avatar, width: 65.sp, height: 65.sp, ), @@ -433,29 +461,30 @@ class MinefragmentPage extends StatelessWidget { Widget _buildNameRow(MinefragmentLogic logic) { return Container( + margin: EdgeInsets.only(top: 6.sp), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - logic.userInfoBean!=null ? logic.userInfoBean!.nickname:"", + logic.name, style: TextStyle( color: Color.fromRGBO(247, 250, 250, 1.0), - fontSize: 16, + fontSize: 16.sp, ), ), Row( children: [ Text( - "进入主页", + logic.enterHomeInfoMsg, style: TextStyle( color: Color.fromRGBO(247, 250, 250, 1.0), - fontSize: 16, + fontSize: 16.sp, ), ), Image( image: AssetImage(getHomeImage("icon_in")), - width: 44, - height: 18, + width: 44.sp, + height: 18.sp, ), ], ), @@ -479,21 +508,21 @@ class MinefragmentPage extends StatelessWidget { end: Alignment.centerRight, ), ), - padding: EdgeInsets.only(top: 2, bottom: 2, left: 10, right: 10), + padding: EdgeInsets.only(top: 2.sp, bottom: 2.sp, left: 10.sp, right: 10.sp), child: Text( logic.ageMsg, style: TextStyle( color: Colors.black, - fontSize: 10, + fontSize: 10.sp, ), ), ), - SizedBox(width: 6), + SizedBox(width: 6.sp), logic.isVip>0 ? Image( image: AssetImage(getBaseImage("vip")), - width: 44, - height: 18, + width: 44.sp, + height: 18.sp, ):Container(), ], ); diff --git a/circle_app/lib/app/photoinfo/logic.dart b/circle_app/lib/app/photoinfo/logic.dart index 9ddc378..0ba093d 100644 --- a/circle_app/lib/app/photoinfo/logic.dart +++ b/circle_app/lib/app/photoinfo/logic.dart @@ -14,16 +14,23 @@ import 'state.dart'; class PhotoinfoLogic extends GetxController { final PhotoinfoState state = PhotoinfoState(); - - @override - void onClose() { - timer.cancel(); - super.onClose(); - } + TextEditingController photoController = TextEditingController(); + // TextEditingController passwordController = TextEditingController(); + TextEditingController newPhotoController = TextEditingController(); + TextEditingController codeController = TextEditingController(); int countdownSeconds = 60; bool isCountingDown = false; - late Timer timer ; + Timer? timer ; + + + + @override + void onClose() { + timer?.cancel(); + super.onClose(); + } + // @override @@ -36,9 +43,9 @@ class PhotoinfoLogic extends GetxController { bindingPhoto()async{ var data = await DioManager.instance.put(url: Api.bindingPhoto, params: { - "old_phone": state.photoController.text.toString(), - "new_phone": state.newPhotoController.text.toString(), - "code": state.codeController.text.toString(), + "old_phone": photoController.text.toString(), + "new_phone": newPhotoController.text.toString(), + "code": codeController.text.toString(), }); // var activity = Get.find(); // activity.isVip @@ -46,7 +53,7 @@ class PhotoinfoLogic extends GetxController { showToast(bean.msg); if(bean.isSuccess()){ final accountLogic = Get.find(); - accountLogic.photo = state.newPhotoController.text.toString(); + accountLogic.photo = newPhotoController.text.toString(); accountLogic.update(); Get.back(); @@ -65,22 +72,22 @@ class PhotoinfoLogic extends GetxController { print(countdownSeconds.toString()); } else { isCountingDown = false; - timer.cancel(); + timer?.cancel(); } }); } Future getCode() async { - if (state.newPhotoController.text == "" || state.newPhotoController.text .length < 11) { + if(!GetUtils.isPhoneNumber(newPhotoController.text)){ showToast("新手机号输入有误"); return; } - var data = await DioManager.instance.post(url: Api.sendCode, params: {"phone": state.newPhotoController.text}); + var data = await DioManager.instance.post(url: Api.sendCode, params: {"phone": newPhotoController.text}); var bean = BaseResponse.fromJson(data, (data) => Data.fromJson(data)); showToast(bean.msg); if(kDebugMode){ if(bean.code==200){ - state.codeController.text = bean.data!.code.toString(); + codeController.text = bean.data!.code.toString(); startCountdown(); update(); } diff --git a/circle_app/lib/app/photoinfo/state.dart b/circle_app/lib/app/photoinfo/state.dart index 52c1c96..5726ea1 100644 --- a/circle_app/lib/app/photoinfo/state.dart +++ b/circle_app/lib/app/photoinfo/state.dart @@ -1,11 +1,10 @@ import 'package:flutter/cupertino.dart'; class PhotoinfoState { - TextEditingController photoController = TextEditingController(); - // TextEditingController passwordController = TextEditingController(); - TextEditingController newPhotoController = TextEditingController(); - TextEditingController codeController = TextEditingController(); + PhotoinfoState() { ///Initialize variables } + + } diff --git a/circle_app/lib/app/photoinfo/view.dart b/circle_app/lib/app/photoinfo/view.dart index 2e9def1..457d348 100644 --- a/circle_app/lib/app/photoinfo/view.dart +++ b/circle_app/lib/app/photoinfo/view.dart @@ -13,8 +13,8 @@ import 'logic.dart'; class PhotoinfoPage extends StatelessWidget { PhotoinfoPage({Key? key}) : super(key: key); - - final logic = Get.lazyPut(() => PhotoinfoLogic()); + // + // final logic = Get.lazyPut(() => PhotoinfoLogic()); // @override // void dispose() { // _timer?.cancel(); @@ -36,7 +36,7 @@ class PhotoinfoPage extends StatelessWidget { ), child: Scaffold( backgroundColor: Colors.transparent, - appBar: MyAppBar( + appBar: const MyAppBar( centerTitle: '换绑手机号', ), body: Scaffold( @@ -75,16 +75,19 @@ class PhotoinfoPage extends StatelessWidget { height: 32.sp, alignment: Alignment.center, child: TextField( - controller: logic.state.photoController, + controller: logic.photoController, textAlignVertical: TextAlignVertical.center, inputFormatters: [ FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.deny( RegExp('[^0-9]')), ], + maxLines: 1, + maxLength: 11, keyboardType: TextInputType.phone, decoration: InputDecoration( hintText: "请输入已绑定手机号", + counterText:"", hintStyle: TextStyle( color: Colors.grey.shade300, fontSize: 14.0.sp, @@ -175,7 +178,7 @@ class PhotoinfoPage extends StatelessWidget { height: 32.sp, alignment: Alignment.center, child: TextField( - controller: logic.state.newPhotoController, + controller: logic.newPhotoController, textAlignVertical: TextAlignVertical.center, keyboardType: TextInputType.phone, inputFormatters: [ @@ -183,10 +186,14 @@ class PhotoinfoPage extends StatelessWidget { FilteringTextInputFormatter.deny( RegExp('[^0-9]')), ], + maxLines: 1, + maxLength: 11, decoration: InputDecoration( hintText: "请输入新手机号", + counterText: '', hintStyle: TextStyle( color: Colors.grey.shade300, + fontSize: 14.0.sp, ), border: InputBorder.none, @@ -231,7 +238,7 @@ class PhotoinfoPage extends StatelessWidget { height: 32.sp, alignment: Alignment.center, child: TextField( - controller: logic.state.codeController, + controller: logic.codeController, textAlignVertical: TextAlignVertical.center, decoration: InputDecoration( hintText: "请输入验证码", @@ -301,10 +308,10 @@ class PhotoinfoPage extends StatelessWidget { ), GestureDetector( onTap: () { - String photo = logic.state.photoController.text; + String photo = logic.photoController.text; // String password = logic.state.passwordController.text; - String newphoto = logic.state.newPhotoController.text; - String code = logic.state.codeController.text; + String newphoto = logic.newPhotoController.text; + String code = logic.codeController.text; if (photo == "" || photo.length < 11) { showToast("已绑定的手机号输入有误"); return; diff --git a/circle_app/lib/app/splash/logic.dart b/circle_app/lib/app/splash/logic.dart index ab9fd1d..eece74e 100644 --- a/circle_app/lib/app/splash/logic.dart +++ b/circle_app/lib/app/splash/logic.dart @@ -1,6 +1,7 @@ import 'package:get/get.dart'; import '../../router/app_routers.dart'; +import '../../util/SharedPreferencesHelper.dart'; import 'state.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -22,14 +23,17 @@ class SplashLogic extends GetxController { await DioManager.instance.put(url: Api.refreshToken,params:{}); var bean = BaseResponse.fromJson(data, (data) => LoginData.fromJson(data)); if (bean.code == 200) { - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString('Authorization', bean.data!.Authorization.toString()); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); + }); + + Get.offNamed(AppRoutes.Home); return; } else if (bean.code == 30002) { - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString('Authorization', bean.data!.Authorization.toString()); - + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); + }); Get.offNamed(AppRoutes.Complete_materialPage); return; } diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart index a3b3005..5b95844 100644 --- a/circle_app/lib/app/userinfo/logic.dart +++ b/circle_app/lib/app/userinfo/logic.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/cupertino.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -9,9 +7,9 @@ import 'package:shared_preferences/shared_preferences.dart'; import '../../common/config.dart'; import '../../network/api.dart'; import '../../network/dio_manager.dart'; +import '../../util/SharedPreferencesHelper.dart'; import '../../util/qiniu.dart'; import '../../util/util.dart'; -import '../login/complete_material/logic.dart'; import 'state.dart'; class UserinfoLogic extends GetxController { @@ -31,28 +29,36 @@ class UserinfoLogic extends GetxController { bool isShowAlbum = true; bool isLike = false; - + final startTime = DateTime.now(); @override void onInit() async { super.onInit(); - SharedPreferences prefs = await SharedPreferences.getInstance(); - if(prefs.getInt('userId')!=0&&prefs.getInt('userId').toString()==userId){ - userId = ''; + if (userId != '') { + SharedPreferences sharedPreferences = + await SharedPreferences.getInstance(); + if (sharedPreferences.getInt(SharedPreferencesHelper.USERID) != 0 && + sharedPreferences.getInt(SharedPreferencesHelper.USERID).toString() == + userId) { + userId = ''; + } } - + state.imaglist.clear(); if (userId == '') { + isMe = true; var data = await DioManager.instance.get(url: Api.getUserInfo); var bean = BaseResponse.fromJson( data, (data) => ResponseBean.fromJson(data)); if (bean.isSuccess()) { + isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; userInfoBean = bean.data.user; isVip = userInfoBean!.vip; - - onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线"; + //访问自己强制在线 + userInfoBean!.isOnline = true; + onLineCity = userInfoBean!.isOnline ? "在线" : "离线"; isOnline = userInfoBean!.isOnline; if (userInfoBean!.city != null) { onLineCity = "$onLineCity·${userInfoBean!.city}"; @@ -73,6 +79,8 @@ class UserinfoLogic extends GetxController { state.imaglist.add(element); }); } + + } else { isMe = false; var data = await DioManager.instance @@ -81,7 +89,8 @@ class UserinfoLogic extends GetxController { data, (data) => ResponseBean.fromJson(data)); if (bean.isSuccess()) { isLike = bean.data.is_follow; - isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; + isLikeFoMsg = + "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; userInfoBean = bean.data!.user; isVip = userInfoBean!.vip; @@ -97,7 +106,7 @@ class UserinfoLogic extends GetxController { } var myAlbumData = await DioManager.instance - .get(url: Api.getTaAlbum + userId + "/albums"); + .get(url: "${Api.getTaAlbum + userId}/albums"); var myAlbumBean = BaseResponse.fromJson(myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData)); if (myAlbumBean.isSuccess()) { @@ -108,16 +117,17 @@ class UserinfoLogic extends GetxController { } var urgedata = await DioManager.instance - .get(url: Api.getUrgeStatus + userId + "/urge/album/status"); + .get(url: "${Api.getUrgeStatus + userId}/urge/album/status"); var urgeBean = BaseResponse.fromJson( urgedata, (urgedata) => UrgentStatus.fromJson(urgedata)); //if(urgedata.isSuccess()){ - isUrgeStatus = urgeBean.data.isUrgent; + isUrgeStatus = urgeBean.data.isUrgent; //} - } update(); + + var data = await DioManager.instance.get(url: Api.getqiniuToken, params: {}); var bean = BaseResponse.fromJson( @@ -140,36 +150,38 @@ class UserinfoLogic extends GetxController { delAlbumImage(int index) async { var data = await DioManager.instance - .get(url: Api.deleteAlbum + state.imaglist[index].id.toString()); + .delete(url: Api.deleteAlbum + state.imaglist[index].id.toString()); var bean = BaseResponse.fromJson(data, (data) => data); if (bean.code == 200) { state.imaglist.removeAt(index); - Navigator.pop(Get.context!); + // Navigator.pop(Get.context!); update(); } } setLike() async { - var data = await DioManager.instance - .post(url: "${Api.setLike + userId}/follow", params: { - 'status': isLike?"0":"1" - }); - var bean = BaseResponse.fromJson(data, (jsonData) => jsonData,); - if(bean.isSuccess()){ + var data = await DioManager.instance.post( + url: "${Api.setLike + userId}/follow", + params: {'status': isLike ? "0" : "1"}); + var bean = BaseResponse.fromJson( + data, + (jsonData) => jsonData, + ); + if (bean.isSuccess()) { isLike = !isLike; update(); } showToast(bean.msg); - } setBlock() async { var data = await DioManager.instance - .post(url: "${Api.setBlock + userId}/block", params: { - 'status': "1" - }); - var bean = BaseResponse.fromJson(data, (jsonData) => jsonData,); - if(bean.isSuccess()){ + .post(url: "${Api.setBlock + userId}/block", params: {'status': "1"}); + var bean = BaseResponse.fromJson( + data, + (jsonData) => jsonData, + ); + if (bean.isSuccess()) { Navigator.pop(Get.context!); update(); } @@ -294,12 +306,11 @@ class ResponseBean { int imageUrgeCount; bool is_follow; - ResponseBean({ - required this.user, - required this.likeMeCount, - required this.imageUrgeCount, - required this.is_follow - }); + ResponseBean( + {required this.user, + required this.likeMeCount, + required this.imageUrgeCount, + required this.is_follow}); factory ResponseBean.fromJson(Map json) { return ResponseBean( diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index d6bb7c4..feeb43c 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -572,6 +572,7 @@ class _MyTabbedScreenState extends State }, child: CachedNetworkImage( fit: BoxFit.cover, + placeholder: null, imageUrl: controller.userInfoBean != null ? controller.userInfoBean!.avatar : "", diff --git a/circle_app/lib/network/dio_manager.dart b/circle_app/lib/network/dio_manager.dart index b9b4edf..623c631 100644 --- a/circle_app/lib/network/dio_manager.dart +++ b/circle_app/lib/network/dio_manager.dart @@ -207,6 +207,18 @@ class DioManager { pushLoginPage(); } return responseMap; + // switch(responseMap["code"]){ + // case 200: + // case 30503: + // return responseMap; + // case 5003: + // pushLoginPage(); + // break; + // + // default: + // return {'code': responseMap["code"], 'msg': responseMap["msg"]}; + // } + return responseMap; } on DioException catch (e) { // // DioError是指返回值不为200的情况 // logger.shout('DioError报错${e.type}:${e.error.toString()}'); @@ -280,7 +292,9 @@ class BaseResponse { } else { throw Exception('未提供 fromJsonData 函数来解析数据。'); } - } else { + } else if (dataJson is List) { + data = fromJsonData(dataJson); + }else { throw Exception('无效的数据格式。期望是 String 或 Map 类型。'); } } diff --git a/circle_app/lib/util/SharedPreferencesHelper.dart b/circle_app/lib/util/SharedPreferencesHelper.dart new file mode 100644 index 0000000..fbca91b --- /dev/null +++ b/circle_app/lib/util/SharedPreferencesHelper.dart @@ -0,0 +1,66 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class SharedPreferencesHelper { + static const VIP = 'vip'; + static const USERID = 'userId'; + static const LIKEMECOUNT = 'likeMeCount'; + static const RECENTVISITCOUNT = 'recentVisitCount'; + static const PHOTO = 'photo'; + static const AUTHORIZATION = 'Authorization'; + + static const AVATAR = 'avatar'; + static const NAME = 'name'; + + static SharedPreferencesHelper? _instance; + static SharedPreferences? _preferences; + + SharedPreferencesHelper._(); + + static Future getInstance() async { + if (_instance == null) { + _instance = SharedPreferencesHelper._(); + await _instance!._initPreferences(); + } + return _instance!; + } + + Future _initPreferences() async { + _preferences = await SharedPreferences.getInstance(); + } + + SharedPreferences? get preferences { + return _preferences; + } + + setString(String key, String value) async { + final prefs = preferences; + prefs?.setString(key, value) ?? ""; + } + + setInt(String key, int value) async { + final prefs = preferences; + prefs?.setInt(key, value) ?? 0; + } + + int getInt(String key) { + final prefs = preferences; + return prefs?.getInt(key) ?? 0; + } + + String getString(String key) { + final prefs = preferences; + return prefs?.getString(key) ?? ''; + } + + + + bool? getBool(String key) { + final prefs = preferences; + return prefs?.getBool(key); + } + + void clear() { + final prefs = preferences; + prefs?.clear(); + } +} diff --git a/circle_app/lib/util/device.dart b/circle_app/lib/util/device.dart index f596ed7..81fb1a5 100644 --- a/circle_app/lib/util/device.dart +++ b/circle_app/lib/util/device.dart @@ -4,6 +4,9 @@ import 'package:device_info/device_info.dart'; import 'package:geolocator/geolocator.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:package_info_plus/package_info_plus.dart'; + +import 'SharedPreferencesHelper.dart'; + //手机系统版本 Future getDeviceId() async { String deviceId = ""; @@ -24,7 +27,6 @@ Future getDeviceId() async { return deviceId; } - Future getVersion() async { String version = ""; final info = await PackageInfo.fromPlatform(); @@ -38,12 +40,14 @@ Future getVersionName() async { versionName = info.version; return versionName; } + Future getVersionCode() async { String versionCode = ""; final info = await PackageInfo.fromPlatform(); versionCode = info.buildNumber; return versionCode; } + //imei Future getImei() async { String imei = ""; @@ -59,6 +63,7 @@ Future getImei() async { } return imei; } + //手机型号 Future getBrand() async { String brand = ''; @@ -74,7 +79,8 @@ Future getBrand() async { } Future getLocation() async { - LatLng latLng = LatLng(latitude: 0.0, longitude: 0.0);; + LatLng latLng = LatLng(latitude: 0.0, longitude: 0.0); + ; try { LocationPermission permission = await Geolocator.requestPermission(); if (permission == LocationPermission.whileInUse || @@ -84,7 +90,8 @@ Future getLocation() async { ); print('Latitude: ${position.latitude}'); print('Longitude: ${position.longitude}'); - latLng= LatLng(latitude: position.latitude, longitude: position.longitude); + latLng = + LatLng(latitude: position.latitude, longitude: position.longitude); } else { print('Location permission denied'); } @@ -102,6 +109,8 @@ class LatLng { } Future getAuthorization() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - return prefs.getString("Authorization") ?? ""; + String token =""; + SharedPreferences sharedPreferences =await SharedPreferences.getInstance(); + token = sharedPreferences.getString(SharedPreferencesHelper.AUTHORIZATION)??""; + return token; } diff --git a/circle_app/lib/util/util.dart b/circle_app/lib/util/util.dart index 9327d5d..af8342f 100644 --- a/circle_app/lib/util/util.dart +++ b/circle_app/lib/util/util.dart @@ -13,6 +13,8 @@ import 'package:get/get_state_manager/get_state_manager.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:video_compress/video_compress.dart'; +import 'SharedPreferencesHelper.dart'; + class Util { } @@ -130,8 +132,11 @@ String convertToTenThousand(int number) { } } pushLoginPage() async{ - SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.clear(); + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.clear(); + }); + + Get.offAllNamed(AppRoutes.Login); } String filterSensitiveWords(String input, List sensitiveWords) {