From 916272bf3bc0b45fe55af0ca90614e8d6626f305 Mon Sep 17 00:00:00 2001 From: louis <869322496@qq.com> Date: Tue, 19 Mar 2024 08:59:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E9=A1=B5=20=E9=97=AA?= =?UTF-8?q?=E5=B1=8F=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 25 ++ .../src/main/res/drawable-land/background.png | Bin 0 -> 92765 bytes .../res/drawable-land/launch_background.xml | 6 + assets/images/edit_icon.png | Bin 0 -> 1175 bytes assets/images/mine_bg.png | Bin 0 -> 34628 bytes assets/images/photo_icon.png | Bin 0 -> 7542 bytes flutter_native_splash.yaml | 6 + lib/apis/api.dart | 24 +- lib/app_theme.dart | 9 +- lib/config.dart | 3 +- lib/constants/global_url.dart | 21 +- lib/global.dart | 1 + lib/models/app_bottom_nav_item.dart | 7 +- lib/models/auth.dart | 14 +- lib/models/role.model.dart | 40 +++ lib/models/user_info.model.dart | 267 ++++-------------- lib/screens/home/home.dart | 5 +- lib/screens/landing/zt_landing.dart | 18 +- lib/screens/login/login.controller.dart | 4 + lib/screens/login/login.dart | 9 +- lib/screens/mine/mine.dart | 82 ++---- .../mine/settings/mine.controller.dart | 13 + lib/screens/mine/settings/mine_settings.dart | 71 +++++ .../mine/useinfo/userinfo.controller.dart | 6 - lib/screens/mine/useinfo/userinfo.dart | 200 ++++++------- lib/services/app_info.service.dart | 22 +- lib/services/dio.service.dart | 30 +- lib/services/storage.service.dart | 18 +- lib/store/auth.store.dart | 52 ++-- lib/util/loading_util.dart | 49 ++-- lib/util/snack_bar.util.dart | 14 +- lib/widgets/my_avatar.dart | 2 +- 32 files changed, 466 insertions(+), 552 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 android/app/src/main/res/drawable-land/background.png create mode 100644 android/app/src/main/res/drawable-land/launch_background.xml create mode 100644 assets/images/edit_icon.png create mode 100644 assets/images/mine_bg.png create mode 100644 assets/images/photo_icon.png create mode 100644 lib/models/role.model.dart create mode 100644 lib/screens/mine/settings/mine.controller.dart create mode 100644 lib/screens/mine/settings/mine_settings.dart diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a9cbb89 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "sk_base_mobile", + "request": "launch", + "type": "dart" + }, + { + "name": "sk_base_mobile (profile mode)", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "sk_base_mobile (release mode)", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} \ No newline at end of file diff --git a/android/app/src/main/res/drawable-land/background.png b/android/app/src/main/res/drawable-land/background.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fbf10400c008078e2c23a4ed2b81939561f1f4 GIT binary patch literal 92765 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 + + + + + diff --git a/assets/images/edit_icon.png b/assets/images/edit_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..31321860f72f14943029f8f20af423bdf56325e1 GIT binary patch literal 1175 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 Q+W-In07*qoM6N<$f@>UoM*si- literal 0 HcmV?d00001 diff --git a/assets/images/photo_icon.png b/assets/images/photo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2c82a1c79cacad5e2287a8809830ea208770379e GIT binary patch literal 7542 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 login(String? oauthType, String? token) { - return DioService.dio.post(Urls.login, - data: {'oauthType': oauthType, 'token': token}, - options: Options(contentType: "application/x-www-form-urlencoded")); +// 登录 +Future login(String username, String password) { + return DioService.dio.post( + Urls.login, + data: {'username': username, 'password': password}, + ); +} + +// 获取个人信息 +Future getUserInfo() { + return DioService.dio.get( + Urls.getUserInfo, + ); } Future logout() { @@ -32,13 +41,6 @@ Future saveUserInfo(Map data) { return DioService.dio.post(Urls.saveUserInfo, data: data); } -Future getUserInfo(String userId) { - Map data = { - "userId": userId, - }; - return DioService.dio.get(Urls.getUserInfo, queryParameters: data); -} - Future uploadImg(File file) async { // DateTime dateTime = DateTime.now(); // String fileName = file.path.split('/').last; diff --git a/lib/app_theme.dart b/lib/app_theme.dart index 697b0be..88dbcc9 100644 --- a/lib/app_theme.dart +++ b/lib/app_theme.dart @@ -19,7 +19,7 @@ class AppTheme { static const Color snackbarErrorBackgroudColor = Colors.red; static const Color snackbarSuccessBackgroudColor = Colors.green; static const Color snackbarWarningBackgroudColor = Colors.orange; - static const Color dismissibleBackground = Color(0xFF364A54); + static Color barrierColor = Colors.black.withOpacity(0.5); static const String fontName = 'NotoSans'; } @@ -33,6 +33,11 @@ final theme = ThemeData( dividerColor: AppTheme.grey, cardColor: AppTheme.white, scaffoldBackgroundColor: AppTheme.nearlyWhite, + bottomNavigationBarTheme: BottomNavigationBarThemeData( + backgroundColor: AppTheme.nearlyWhite, + unselectedLabelStyle: TextStyle(fontSize: ScreenAdaper.sp(20)), + selectedLabelStyle: TextStyle(fontSize: ScreenAdaper.sp(20)), + selectedItemColor: AppTheme.primaryColor), tabBarTheme: TabBarTheme( indicator: BoxDecoration( border: @@ -44,7 +49,7 @@ final theme = ThemeData( backgroundColor: AppTheme.primaryColor, titleTextStyle: TextStyle( color: Colors.black, - fontSize: ScreenAdaper.sp(20), + fontSize: ScreenAdaper.sp(25), fontWeight: FontWeight.bold), ), inputDecorationTheme: InputDecorationTheme( diff --git a/lib/config.dart b/lib/config.dart index dd66a9b..ae92f66 100644 --- a/lib/config.dart +++ b/lib/config.dart @@ -1,6 +1,7 @@ /// Global config class GloablConfig { - static const BASE_URL = "http://172.21.128.1:3000/"; + // static const BASE_URL = "http://172.21.128.1:3000/api"; + static const BASE_URL = "http://10.0.2.2:7001/api/"; static const DOMAIN_NAME = "山矿通"; static const DEBUG = true; static const PRIVACY_POLICY = 'http://h5.heeru.xyz/privacyPolicy.html'; diff --git a/lib/constants/global_url.dart b/lib/constants/global_url.dart index 8d9d512..46ded4a 100644 --- a/lib/constants/global_url.dart +++ b/lib/constants/global_url.dart @@ -1,27 +1,10 @@ class Urls { static String getAppConfig = 'config/getAppConfig'; - static String login = 'security/oauth'; + static String login = 'auth/login'; static String isValidToken = 'security/isValidToken'; static String logout = 'security/logout'; static String deleteAccount = 'user/deleteAccount'; - static String rankList = 'broadcaster/wall/search'; - static String addFriend = 'user/addFriend'; - static String removeFriend = 'user/unfriend'; - static String goodsList = 'coin/goods/search'; static String saveUserInfo = 'user/saveUserInfo'; - static String getUserInfo = 'user/getUserInfo'; - static String getOssPolicy = 'user/oss/policy'; + static String getUserInfo = 'account/profile'; static String updateAvatar = 'user/updateAvatar'; - static String getFollowedList = 'user/getFriendsListPage'; - static String reportComplain = 'report/complain/insertRecord'; - static String blockList = 'report/complain/blockList'; - static String unblock = 'report/complain/removeBlock'; - static String googleTranslate = - 'https://translation.googleapis.com/language/translate/v2'; - static String getIMStrategy = 'config/getStrategy'; - static String getIMToken = 'user/rongcloud/token'; - static String trackingLog = 'log/live-chat'; - static String createOrder = 'coin/recharge/create'; - static String validateOrder = 'coin/recharge/payment/ipa'; - static String reviewModeConsume = 'coin/reviewModeConsume'; } diff --git a/lib/global.dart b/lib/global.dart index 21b0f5a..55fc531 100644 --- a/lib/global.dart +++ b/lib/global.dart @@ -7,6 +7,7 @@ import 'package:sk_base_mobile/services/app_info.service.dart'; import 'package:sk_base_mobile/services/dio.service.dart'; import 'package:sk_base_mobile/services/storage.service.dart'; import 'store/store.dart'; +import 'package:flutter_native_splash/flutter_native_splash.dart'; /// 全局注册 class Global { diff --git a/lib/models/app_bottom_nav_item.dart b/lib/models/app_bottom_nav_item.dart index b8747d4..85b6511 100644 --- a/lib/models/app_bottom_nav_item.dart +++ b/lib/models/app_bottom_nav_item.dart @@ -1,9 +1,10 @@ import 'package:flutter/cupertino.dart'; class AppBottomNavItem { - String? icon; - String? activeIcon; + Icon icon; + Icon activeIcon; String? label; Widget? page; - AppBottomNavItem({this.icon, this.activeIcon, this.label, this.page}); + AppBottomNavItem( + {required this.icon, required this.activeIcon, this.label, this.page}); } diff --git a/lib/models/auth.dart b/lib/models/auth.dart index b122d08..0347d4b 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -1,27 +1,15 @@ -import 'package:sk_base_mobile/models/user_info.model.dart'; - class Auth { - bool? isFirstRegister; String? token; - UserInfoModel? userInfo; - Auth({this.isFirstRegister, this.token, this.userInfo}); + Auth({this.token}); Auth.fromJson(Map json) { - isFirstRegister = json['isFirstRegister']; token = json['token']; - userInfo = json['userInfo'] != null - ? UserInfoModel.fromJson(json['userInfo']) - : null; } Map toJson() { final Map data = Map(); - data['isFirstRegister'] = isFirstRegister; data['token'] = token; - if (userInfo != null) { - data['userInfo'] = userInfo!.toJson(); - } return data; } } diff --git a/lib/models/role.model.dart b/lib/models/role.model.dart new file mode 100644 index 0000000..432fb28 --- /dev/null +++ b/lib/models/role.model.dart @@ -0,0 +1,40 @@ +class RoleModel { + int? id; + String? createdAt; + String? updatedAt; + String? name; + String? value; + String? remark; + int? status; + + RoleModel( + {this.id, + this.createdAt, + this.updatedAt, + this.name, + this.value, + this.remark, + this.status}); + + RoleModel.fromJson(Map json) { + id = json['id']; + createdAt = json['createdAt']; + updatedAt = json['updatedAt']; + name = json['name']; + value = json['value']; + remark = json['remark']; + status = json['status']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['createdAt'] = createdAt; + data['updatedAt'] = updatedAt; + data['name'] = name; + data['value'] = value; + data['remark'] = remark; + data['status'] = status; + return data; + } +} diff --git a/lib/models/user_info.model.dart b/lib/models/user_info.model.dart index 45a9eec..87e9f9a 100644 --- a/lib/models/user_info.model.dart +++ b/lib/models/user_info.model.dart @@ -1,230 +1,69 @@ -class UserInfoModel { - String? userId; - int? userType; - String? nickname; - bool? isInternal; - String? avatar; - String? avatarUrl; - String? avatarThumbUrl; - String? avatarMiddleThumbUrl; - List? mediumList; - List? avatarRespList; - int? gender; - String? birthday; - int? age; - String? country; - String? pkgName; - bool? isAnswer; - int? availableCoins; - int? auditStatus; - bool? isShowReviewSupplementTips; - List? tagsList; - List? tagDetails; - String? rongcloudToken; - bool? isRecharge; - bool? isVip; - int? level; - int? followNum; - int? praiseNum; - bool? isBlock; - bool? isSwitchNotDisturbIm; - bool? isSwitchNotDisturbCall; - bool? isHavePassword; - bool? isReview; - bool? isMultiple; - String? registerPkgName; - String? registerCountry; - String? loginPkgName; - int? giftWallAction; +import 'package:sk_base_mobile/models/role.model.dart'; - UserInfoModel({ - this.userId, - this.userType, - this.nickname, - this.isInternal, - this.avatar, - this.avatarUrl, - this.avatarThumbUrl, - this.avatarMiddleThumbUrl, - this.mediumList, - this.avatarRespList, - this.gender, - this.birthday, - this.age, - this.country, - this.pkgName, - this.isAnswer, - this.availableCoins, - this.auditStatus, - this.isShowReviewSupplementTips, - this.tagsList, - this.tagDetails, - this.rongcloudToken, - this.isRecharge, - this.isVip, - this.level, - this.followNum, - this.praiseNum, - this.isBlock, - this.isSwitchNotDisturbIm, - this.isSwitchNotDisturbCall, - this.isHavePassword, - this.isReview, - this.isMultiple, - this.registerPkgName, - this.registerCountry, - this.loginPkgName, - this.giftWallAction, - }); +class UserInfoModel { + int? id; + String? createdAt; + String? updatedAt; + String? username; + String? nickname; + String? avatar; + String? qq; + String? email; + String? phone; + String? remark; + int? status; + List? roles; + + UserInfoModel( + {this.id, + this.createdAt, + this.updatedAt, + this.username, + this.nickname, + this.avatar, + this.qq, + this.email, + this.phone, + this.remark, + this.status, + this.roles}); UserInfoModel.fromJson(Map json) { - userId = json['userId']; - userType = json['userType']; + id = json['id']; + createdAt = json['createdAt']; + updatedAt = json['updatedAt']; + username = json['username']; nickname = json['nickname']; - isInternal = json['isInternal']; avatar = json['avatar']; - avatarUrl = json['avatarUrl']; - avatarThumbUrl = json['avatarThumbUrl']; - avatarMiddleThumbUrl = json['avatarMiddleThumbUrl']; - - if (json['avatarRespList'] != null) { - avatarRespList = []; - json['avatarRespList'].forEach((v) { - avatarRespList!.add(AvatarRespList.fromJson(v)); + qq = json['qq']; + email = json['email']; + phone = json['phone']; + remark = json['remark']; + status = json['status']; + if (json['roles'] != null) { + roles = []; + json['roles'].forEach((v) { + roles!.add(RoleModel.fromJson(v)); }); } - gender = json['gender']; - birthday = json['birthday']; - age = json['age']; - country = json['country']; - pkgName = json['pkgName']; - - isAnswer = json['isAnswer']; - availableCoins = json['availableCoins']; - auditStatus = json['auditStatus']; - isShowReviewSupplementTips = json['isShowReviewSupplementTips']; - if (json['tagsList'] != null) { - tagsList = []; - json['tagsList'].forEach((v) { - tagsList!.add(v); - }); - } - if (json['tagDetails'] != null) { - tagDetails = []; - json['tagDetails'].forEach((v) { - tagDetails!.add(TagDetails.fromJson(v)); - }); - } - rongcloudToken = json['rongcloudToken']; - isRecharge = json['isRecharge']; - isVip = json['isVip']; - level = json['level']; - followNum = json['followNum']; - praiseNum = json['praiseNum']; - isBlock = json['isBlock']; - isSwitchNotDisturbIm = json['isSwitchNotDisturbIm']; - isSwitchNotDisturbCall = json['isSwitchNotDisturbCall']; - isHavePassword = json['isHavePassword']; - isReview = json['isReview']; - isMultiple = json['isMultiple']; - registerPkgName = json['registerPkgName']; - registerCountry = json['registerCountry']; - loginPkgName = json['loginPkgName']; - giftWallAction = json['giftWallAction']; } Map toJson() { - final Map data = Map(); - data['userId'] = userId; - data['userType'] = userType; + final Map data = {}; + data['id'] = id; + data['createdAt'] = createdAt; + data['updatedAt'] = updatedAt; + data['username'] = username; data['nickname'] = nickname; - data['isInternal'] = isInternal; data['avatar'] = avatar; - data['avatarUrl'] = avatarUrl; - data['avatarThumbUrl'] = avatarThumbUrl; - data['avatarMiddleThumbUrl'] = avatarMiddleThumbUrl; - if (this.avatarRespList != null) { - data['avatarRespList'] = avatarRespList!.map((v) => v.toJson()).toList(); + data['qq'] = qq; + data['email'] = email; + data['phone'] = phone; + data['remark'] = remark; + data['status'] = status; + if (roles != null) { + data['roles'] = roles!.map((v) => v.toJson()).toList(); } - data['gender'] = gender; - data['birthday'] = birthday; - data['age'] = age; - data['country'] = country; - data['pkgName'] = pkgName; - - data['isAnswer'] = isAnswer; - data['availableCoins'] = availableCoins; - data['auditStatus'] = auditStatus; - data['isShowReviewSupplementTips'] = isShowReviewSupplementTips; - if (this.tagsList != null) { - data['tagsList'] = tagsList!.map((v) => v).toList(); - } - if (this.tagDetails != null) { - data['tagDetails'] = tagDetails!.map((v) => v.toJson()).toList(); - } - data['rongcloudToken'] = rongcloudToken; - data['isRecharge'] = isRecharge; - data['isVip'] = isVip; - data['level'] = level; - data['followNum'] = followNum; - data['praiseNum'] = praiseNum; - data['isBlock'] = isBlock; - data['isSwitchNotDisturbIm'] = isSwitchNotDisturbIm; - data['isSwitchNotDisturbCall'] = isSwitchNotDisturbCall; - data['isHavePassword'] = isHavePassword; - data['isReview'] = isReview; - data['isMultiple'] = isMultiple; - data['registerPkgName'] = registerPkgName; - data['registerCountry'] = registerCountry; - data['loginPkgName'] = loginPkgName; - data['giftWallAction'] = giftWallAction; - return data; - } -} - -class AvatarRespList { - String? mediaPath; - String? mediaUrl; - String? middleThumbUrl; - String? thumbUrl; - - AvatarRespList({this.mediaPath, mediaUrl, middleThumbUrl, thumbUrl}); - - AvatarRespList.fromJson(Map json) { - mediaPath = json['mediaPath']; - mediaUrl = json['mediaUrl']; - middleThumbUrl = json['middleThumbUrl']; - thumbUrl = json['thumbUrl']; - } - - Map toJson() { - final Map data = Map(); - data['mediaPath'] = mediaPath; - data['mediaUrl'] = mediaUrl; - data['middleThumbUrl'] = middleThumbUrl; - data['thumbUrl'] = thumbUrl; - return data; - } -} - -class TagDetails { - String? tag; - String? tagTip; - String? tagColor; - - TagDetails({this.tag, tagTip, tagColor}); - - TagDetails.fromJson(Map json) { - tag = json['tag']; - tagTip = json['tagTip']; - tagColor = json['tagColor']; - } - - Map toJson() { - final Map data = Map(); - data['tag'] = tag; - data['tagTip'] = tagTip; - data['tagColor'] = tagColor; return data; } } diff --git a/lib/screens/home/home.dart b/lib/screens/home/home.dart index 0ff65ec..7adc960 100644 --- a/lib/screens/home/home.dart +++ b/lib/screens/home/home.dart @@ -5,6 +5,9 @@ class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { - return const Placeholder(); + return Scaffold( + appBar: AppBar(title: Text('首页')), + body: SizedBox(child: Text('sss')), + ); } } diff --git a/lib/screens/landing/zt_landing.dart b/lib/screens/landing/zt_landing.dart index 67d1f38..827f476 100644 --- a/lib/screens/landing/zt_landing.dart +++ b/lib/screens/landing/zt_landing.dart @@ -34,26 +34,16 @@ class _LandingPageState extends State { AppInfoService.to.bottomNavItems!; bottomNavItems = roleWithBottomNavItems .map((e) => BottomNavigationBarItem( - icon: Image.asset( - e.icon!, - height: ScreenAdaper.width(30), - width: ScreenAdaper.width(30), - ), - activeIcon: Image.asset( - e.activeIcon!, - height: ScreenAdaper.width(30), - width: ScreenAdaper.width(30), - ), - label: e.label)) + icon: e.icon, activeIcon: e.activeIcon, label: e.label)) .toList(); pages = roleWithBottomNavItems.map((e) => e.page!).toList(); return Scaffold( bottomNavigationBar: BottomNavigationBar( - iconSize: ScreenAdaper.sp(25), + iconSize: ScreenAdaper.sp(40), type: BottomNavigationBarType.fixed, items: bottomNavItems, - showSelectedLabels: false, - showUnselectedLabels: false, + showSelectedLabels: true, + showUnselectedLabels: true, currentIndex: _selectedLanding, onTap: (landing) { _onItemTapped(landing); diff --git a/lib/screens/login/login.controller.dart b/lib/screens/login/login.controller.dart index 8fd0a65..dafcab7 100644 --- a/lib/screens/login/login.controller.dart +++ b/lib/screens/login/login.controller.dart @@ -9,10 +9,14 @@ class LoginController extends GetxController { final isAgreeTerm = RxBool(false); final formKey = GlobalKey(); final passwordFocusNode = FocusNode(); + String username = ''; + String password = ''; bool loading = false; Future doLogin() async { if (!formKey.currentState!.validate()) { return; } + // 拿出form中的数据 + AuthStore.to.login(username: username, password: password); } } diff --git a/lib/screens/login/login.dart b/lib/screens/login/login.dart index ddbf4af..a239cec 100644 --- a/lib/screens/login/login.dart +++ b/lib/screens/login/login.dart @@ -162,7 +162,9 @@ class LoginScreen extends StatelessWidget { _controller.passwordFocusNode.requestFocus(); }, style: TextStyle(fontSize: ScreenAdaper.sp(25)), - onChanged: (value) {}, + onChanged: (value) { + _controller.username = value; + }, ); } @@ -181,8 +183,11 @@ class LoginScreen extends StatelessWidget { onFieldSubmitted: (value) { _controller.doLogin(); }, + style: TextStyle(fontSize: ScreenAdaper.sp(25)), - onChanged: (value) {}, + onChanged: (value) { + _controller.password = value; + }, // validator: (String? value) { // return (value ?? '').length >= 6 ? null : '密码长度至少6位'; // }, diff --git a/lib/screens/mine/mine.dart b/lib/screens/mine/mine.dart index 88f87dc..27d37ae 100644 --- a/lib/screens/mine/mine.dart +++ b/lib/screens/mine/mine.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sk_base_mobile/screens/mine/mine.controller.dart'; +import 'package:sk_base_mobile/screens/mine/settings/mine_settings.dart'; // import 'package:sk_base_mobile/screens/mine/mine_about.dart'; // import 'package:sk_base_mobile/screens/mine/mine_block.dart'; // import 'package:sk_base_mobile/screens/mine/mine_mytickets.dart'; @@ -29,10 +30,6 @@ class _MinePageState extends State @override void initState() { super.initState(); - _controller.tabController ??= TabController( - initialIndex: _controller.selectedTabIndex.value, - length: 4, - vsync: this); } @override @@ -41,7 +38,7 @@ class _MinePageState extends State } Widget _buildBody() { - return Column(mainAxisSize: MainAxisSize.max, children: [ + return Column(children: [ Container( height: ScreenAdaper.height(360), width: ScreenAdaper.screenWidth(), @@ -115,7 +112,7 @@ class _MinePageState extends State SizedBox( width: ScreenAdaper.width(210), child: Text( - 'ID: ${AuthStore.to.userInfo.value.userId}', + 'ID: ${AuthStore.to.userInfo.value.id}', overflow: TextOverflow.ellipsis, maxLines: 2, style: TextStyle( @@ -149,65 +146,20 @@ class _MinePageState extends State ]), ), ), - Expanded( - child: DefaultTabController( - length: 4, - initialIndex: _controller.selectedTabIndex.value, - child: Scaffold( - backgroundColor: AppTheme.white, - appBar: AppBar( - backgroundColor: AppTheme.white, - elevation: 0, - automaticallyImplyLeading: false, - flexibleSpace: _buildTabBar(), - ), - body: _buildTabView()))) + Expanded(child: MineSettingsPage()) + // Expanded( + // child: DefaultTabController( + // length: 4, + // initialIndex: _controller.selectedTabIndex.value, + // child: Scaffold( + // backgroundColor: AppTheme.white, + // appBar: AppBar( + // backgroundColor: AppTheme.white, + // elevation: 0, + // automaticallyImplyLeading: false, + // flexibleSpace: _buildTabBar(), + // ), + // body: _buildTabView()))) ]); } - - Widget _buildTabBar() { - final tabs = _controller.mineTabs - .asMap() - .map((index, item) { - return MapEntry( - index, - Obx( - () => Tab( - child: Image( - image: AssetImage( - 'assets/images/$item${_controller.selectedTabIndex.value == index ? '_active' : ''}.png'))), - )); - }) - .values - .toList(); - - return Container( - margin: EdgeInsets.only(top: ScreenAdaper.height(20)), - padding: EdgeInsets.symmetric(vertical: ScreenAdaper.height(10)), - decoration: const BoxDecoration( - border: Border.symmetric( - horizontal: BorderSide(color: Color(0xFFCCCCCC)))), - child: TabBar( - controller: _controller.tabController, - tabs: tabs, - indicator: const BoxDecoration(), - onTap: (index) { - _controller.selectedTabIndex.value = index; - }, /* */ - ), - ); - } - - Widget _buildTabView() { - return TabBarView( - controller: _controller.tabController, - physics: const NeverScrollableScrollPhysics(), - children: [ - SizedBox(), - SizedBox(), - SizedBox(), - SizedBox(), - ], - ); - } } diff --git a/lib/screens/mine/settings/mine.controller.dart b/lib/screens/mine/settings/mine.controller.dart new file mode 100644 index 0000000..763a7e2 --- /dev/null +++ b/lib/screens/mine/settings/mine.controller.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sk_base_mobile/models/mine_about.model.dart'; + +class MineController extends GetxController { + final selectedTabIndex = 0.obs; + TabController? tabController; + + @override + void onInit() { + super.onInit(); + } +} diff --git a/lib/screens/mine/settings/mine_settings.dart b/lib/screens/mine/settings/mine_settings.dart new file mode 100644 index 0000000..7f722d7 --- /dev/null +++ b/lib/screens/mine/settings/mine_settings.dart @@ -0,0 +1,71 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sk_base_mobile/app_theme.dart'; +import 'package:sk_base_mobile/screens/mine/mine.controller.dart'; +import 'package:sk_base_mobile/store/auth.store.dart'; +import 'package:sk_base_mobile/util/screen_adaper_util.dart'; + +class MineSettingsPage extends StatelessWidget { + final _controller = Get.find(); + MineSettingsPage({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.symmetric(horizontal: ScreenAdaper.width(15)), + child: ListView.separated( + separatorBuilder: (_, index) => const Divider( + color: Color(0xFFCCCCCC), + ), + itemBuilder: ((_, index) => _buildSettingsItem( + index, + )), + itemCount: 4), + ); + } + + Widget _buildSettingsItem(int index) { + switch (index) { + // auto translate + case 0: + return Container( + padding: EdgeInsets.symmetric(vertical: ScreenAdaper.width(10)), + child: Row( + children: [], + )); + case 1: + return InkWell( + onTap: () async { + await AuthStore.to.deleteAccount(); + }, + child: Container( + padding: EdgeInsets.symmetric(vertical: ScreenAdaper.width(10)), + child: Row( + children: [ + Text( + 'Delete acount', + style: TextStyle(fontSize: ScreenAdaper.sp(18)), + ), + ], + ))); + case 2: + return InkWell( + onTap: () async { + await AuthStore.to.logout(force: true); + }, + child: Container( + padding: EdgeInsets.symmetric(vertical: ScreenAdaper.width(10)), + child: Row( + children: [ + Text( + 'Logout', + style: TextStyle(fontSize: ScreenAdaper.sp(18)), + ), + ], + ))); + default: + return SizedBox(); + } + } +} diff --git a/lib/screens/mine/useinfo/userinfo.controller.dart b/lib/screens/mine/useinfo/userinfo.controller.dart index fa24420..ecbf77f 100644 --- a/lib/screens/mine/useinfo/userinfo.controller.dart +++ b/lib/screens/mine/useinfo/userinfo.controller.dart @@ -6,22 +6,16 @@ import 'package:sk_base_mobile/apis/api.dart' as Api; class UserInfoController extends GetxController { final nickNameController = TextEditingController(text: ''); - final countryController = TextEditingController(text: ''); - final birthdayController = TextEditingController(); @override void onReady() async { nickNameController.text = AuthStore.to.userInfo.value.nickname ?? ''; - birthdayController.text = AuthStore.to.userInfo.value.birthday ?? ''; - countryController.text = AuthStore.to.userInfo.value.country ?? ''; super.onReady(); } Future saveUserInfo() async { Map data = { 'nickname': nickNameController.text, - 'birthday': birthdayController.text, - 'country': countryController.text, }; await AuthStore.to.saveUserInfo(data); } diff --git a/lib/screens/mine/useinfo/userinfo.dart b/lib/screens/mine/useinfo/userinfo.dart index 97b1212..356b7ff 100644 --- a/lib/screens/mine/useinfo/userinfo.dart +++ b/lib/screens/mine/useinfo/userinfo.dart @@ -74,109 +74,109 @@ class UserInfoPage extends StatelessWidget { SizedBox( height: ScreenAdaper.height(15), ), - TextFormField( - controller: _controller.birthdayController, - decoration: InputDecoration( - contentPadding: EdgeInsets.fromLTRB( - ScreenAdaper.width(12), 0, ScreenAdaper.width(12), 0), - labelText: "Date of birth", - labelStyle: TextStyle( - color: const Color.fromARGB(255, 136, 136, 136), - fontSize: ScreenAdaper.sp(18)), - enabledBorder: const UnderlineInputBorder( - borderSide: BorderSide( - color: Color.fromARGB(153, 191, 190, 190), - ), - ), - focusedBorder: const UnderlineInputBorder( - borderSide: BorderSide( - color: Color.fromARGB(153, 191, 190, 190), - ), - ), - ), - onTap: () async { - await showCupertinoModalPopup( - context: Get.context!, - builder: (context) => Container( - color: Colors.white, - height: 300, - child: CupertinoDatePicker( - initialDateTime: DateTime.parse( - _controller.birthdayController.text), - minimumDate: DateTime(1900), - maximumDate: DateTime.now() - .subtract(const Duration(days: 18 * 365)), - minimumYear: DateTime(1900).year, - maximumYear: DateTime.now() - .subtract(const Duration(days: 18 * 365)) - .year, - mode: CupertinoDatePickerMode.date, - onDateTimeChanged: (pickeddate) { - _controller.birthdayController.text = - formatDate(pickeddate, [ - yyyy, - '-', - mm, - '-', - dd, - ]); - }), - )); - }, - style: - TextStyle(fontSize: ScreenAdaper.sp(18), color: Colors.black), - cursorColor: const Color.fromARGB(255, 87, 86, 86)), + // TextFormField( + // controller: _controller.birthdayController, + // decoration: InputDecoration( + // contentPadding: EdgeInsets.fromLTRB( + // ScreenAdaper.width(12), 0, ScreenAdaper.width(12), 0), + // labelText: "Date of birth", + // labelStyle: TextStyle( + // color: const Color.fromARGB(255, 136, 136, 136), + // fontSize: ScreenAdaper.sp(18)), + // enabledBorder: const UnderlineInputBorder( + // borderSide: BorderSide( + // color: Color.fromARGB(153, 191, 190, 190), + // ), + // ), + // focusedBorder: const UnderlineInputBorder( + // borderSide: BorderSide( + // color: Color.fromARGB(153, 191, 190, 190), + // ), + // ), + // ), + // onTap: () async { + // await showCupertinoModalPopup( + // context: Get.context!, + // builder: (context) => Container( + // color: Colors.white, + // height: 300, + // child: CupertinoDatePicker( + // initialDateTime: DateTime.parse( + // _controller.birthdayController.text), + // minimumDate: DateTime(1900), + // maximumDate: DateTime.now() + // .subtract(const Duration(days: 18 * 365)), + // minimumYear: DateTime(1900).year, + // maximumYear: DateTime.now() + // .subtract(const Duration(days: 18 * 365)) + // .year, + // mode: CupertinoDatePickerMode.date, + // onDateTimeChanged: (pickeddate) { + // _controller.birthdayController.text = + // formatDate(pickeddate, [ + // yyyy, + // '-', + // mm, + // '-', + // dd, + // ]); + // }), + // )); + // }, + // style: + // TextStyle(fontSize: ScreenAdaper.sp(18), color: Colors.black), + // cursorColor: const Color.fromARGB(255, 87, 86, 86)), SizedBox( height: ScreenAdaper.height(15), ), - TextFormField( - controller: _controller.countryController, - decoration: InputDecoration( - contentPadding: EdgeInsets.fromLTRB( - ScreenAdaper.width(12), 0, ScreenAdaper.width(12), 0), - labelText: "Country", - labelStyle: TextStyle( - color: const Color.fromARGB(255, 136, 136, 136), - fontSize: ScreenAdaper.sp(18)), - enabledBorder: const UnderlineInputBorder( - borderSide: BorderSide( - color: Color.fromARGB(153, 191, 190, 190), - ), - ), - focusedBorder: const UnderlineInputBorder( - borderSide: BorderSide( - color: Color.fromARGB(153, 191, 190, 190), - ), - ), - ), - onTap: () async { - await showCupertinoModalPopup( - context: Get.context!, - builder: (context) => Container( - color: Colors.white, - height: 300, - child: CupertinoPicker( - itemExtent: 50, - onSelectedItemChanged: (index) { - _controller.countryController.text = - Data.countryCodes[index]; - }, - children: Data.countryCodes - .map((e) => Container( - height: ScreenAdaper.height(50), - alignment: Alignment.center, - child: Text( - e, - style: TextStyle( - fontSize: ScreenAdaper.sp(30)), - ), - )) - .toList(), - ))); - }, - style: - TextStyle(fontSize: ScreenAdaper.sp(18), color: Colors.black), - cursorColor: const Color.fromARGB(255, 87, 86, 86)) + // TextFormField( + // controller: _controller.countryController, + // decoration: InputDecoration( + // contentPadding: EdgeInsets.fromLTRB( + // ScreenAdaper.width(12), 0, ScreenAdaper.width(12), 0), + // labelText: "Country", + // labelStyle: TextStyle( + // color: const Color.fromARGB(255, 136, 136, 136), + // fontSize: ScreenAdaper.sp(18)), + // enabledBorder: const UnderlineInputBorder( + // borderSide: BorderSide( + // color: Color.fromARGB(153, 191, 190, 190), + // ), + // ), + // focusedBorder: const UnderlineInputBorder( + // borderSide: BorderSide( + // color: Color.fromARGB(153, 191, 190, 190), + // ), + // ), + // ), + // onTap: () async { + // await showCupertinoModalPopup( + // context: Get.context!, + // builder: (context) => Container( + // color: Colors.white, + // height: 300, + // child: CupertinoPicker( + // itemExtent: 50, + // onSelectedItemChanged: (index) { + // _controller.countryController.text = + // Data.countryCodes[index]; + // }, + // children: Data.countryCodes + // .map((e) => Container( + // height: ScreenAdaper.height(50), + // alignment: Alignment.center, + // child: Text( + // e, + // style: TextStyle( + // fontSize: ScreenAdaper.sp(30)), + // ), + // )) + // .toList(), + // ))); + // }, + // style: + // TextStyle(fontSize: ScreenAdaper.sp(18), color: Colors.black), + // cursorColor: const Color.fromARGB(255, 87, 86, 86)) ], ); } diff --git a/lib/services/app_info.service.dart b/lib/services/app_info.service.dart index d9958e5..8d2c040 100644 --- a/lib/services/app_info.service.dart +++ b/lib/services/app_info.service.dart @@ -1,8 +1,10 @@ import 'dart:convert'; import 'dart:io'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:package_info/package_info.dart'; +import 'package:sk_base_mobile/app_theme.dart'; import 'package:sk_base_mobile/models/app_bottom_nav_item.dart'; import 'package:sk_base_mobile/models/app_config.dart'; import 'package:sk_base_mobile/screens/home/home.dart'; @@ -25,14 +27,18 @@ class AppInfoService extends GetxService { final isCameraing = RxBool(false); List? bottomNavItems = [ AppBottomNavItem( - icon: 'assets/images/landing_icon_bottom_0.png', - activeIcon: 'assets/images/landing_icon_bottom_active_0.png', - label: 'homepage', + icon: const Icon(Icons.home_outlined), + activeIcon: const Icon( + Icons.home, + ), + label: '首页', page: const HomePage()), AppBottomNavItem( - icon: 'assets/images/landing_icon_bottom_3.png', - activeIcon: 'assets/images/landing_icon_bottom_active_3.png', - label: 'mine', + icon: const Icon(Icons.person_outline_outlined), + activeIcon: const Icon( + Icons.person, + ), + label: '我的', page: MinePage()), ]; Future init() async { @@ -40,8 +46,8 @@ class AppInfoService extends GetxService { .info("[service-appInfo] Register app-related information service"); try { - await Future.wait( - [getDeviceInfo(), getPackageInfo(), getAppConfig(), getossPolicy()]); + // await Future.wait( + // [getDeviceInfo(), getPackageInfo(), getAppConfig(), getossPolicy()]); requestPermission(); } catch (e) { LoggerUtil().error(e); diff --git a/lib/services/dio.service.dart b/lib/services/dio.service.dart index 60fe18c..7b648c0 100644 --- a/lib/services/dio.service.dart +++ b/lib/services/dio.service.dart @@ -14,9 +14,9 @@ class DioService extends Get.GetxService { static DioService get to => Get.Get.find(); static Dio get dio => _dio; static late Dio _dio; - List whiteList = [Urls.googleTranslate]; + List whiteList = [Urls.login]; BaseOptions dioBaseOptions = BaseOptions( - connectTimeout: const Duration(minutes: 10), + connectTimeout: const Duration(seconds: 5), baseUrl: '${GloablConfig.BASE_URL}', followRedirects: true); @@ -33,7 +33,6 @@ class DioService extends Get.GetxService { void onError(DioException e, ErrorInterceptorHandler handler) async { if (whiteList.contains(e.requestOptions.path)) { - await SnackBarUtil().error(e.message); return handler.next(e); } if (GloablConfig.DEBUG) { @@ -139,31 +138,6 @@ class DioService extends Get.GetxService { if (response.data is String) { responseData = jsonDecode(response.data); } - switch (responseData['code']) { - case 0: - handler.next(response); - return; - // 其他设备登录 - case 10010304: - await AuthStore().logout(force: true); - await SnackBarUtil() - .error('Other devices have logged in, please log in again.'); - break; - case 100103: - case 10010303: - await AuthStore().logout(force: true); - await SnackBarUtil() - .error('Login has timed out, please log in again.'); - break; - case 10010301: - await AuthStore().logout(force: true); - await SnackBarUtil().error('Token can not empty'); - break; - default: - await SnackBarUtil() - .error('${responseData['key']}: ${responseData['msg']}'); - break; - } } catch (e) { printError(info: e.toString()); } diff --git a/lib/services/storage.service.dart b/lib/services/storage.service.dart index 8f61198..df072f4 100644 --- a/lib/services/storage.service.dart +++ b/lib/services/storage.service.dart @@ -15,7 +15,7 @@ class StorageService extends GetxService { {bool isWithUser = true}) async { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return await _prefs.setString(storeKey, value); } @@ -23,7 +23,7 @@ class StorageService extends GetxService { Future setBool(String key, bool value, {bool isWithUser = true}) async { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return await _prefs.setBool(storeKey, value); } @@ -31,7 +31,7 @@ class StorageService extends GetxService { Future setInt(String key, int value, {bool isWithUser = true}) async { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return await _prefs.setInt(storeKey, value); } @@ -40,7 +40,7 @@ class StorageService extends GetxService { {bool isWithUser = true}) async { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return await _prefs.setStringList(storeKey, value); } @@ -48,7 +48,7 @@ class StorageService extends GetxService { String? getString(String key, {bool isWithUser = true}) { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return _prefs.getString(storeKey); } @@ -56,7 +56,7 @@ class StorageService extends GetxService { int? getInt(String key, {bool isWithUser = true}) { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return _prefs.getInt(storeKey); } @@ -64,7 +64,7 @@ class StorageService extends GetxService { bool? getBool(String key, {bool isWithUser = true}) { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return _prefs.getBool(storeKey) ?? false; } @@ -72,7 +72,7 @@ class StorageService extends GetxService { List getList(String key, {bool isWithUser = true}) { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return _prefs.getStringList(storeKey) ?? []; } @@ -80,7 +80,7 @@ class StorageService extends GetxService { Future remove(String key, {bool isWithUser = true}) async { String storeKey = key; if (isWithUser) { - storeKey = '${AuthStore.to.userInfo.value.userId}_$key'; + storeKey = '${AuthStore.to.userInfo.value.id}_$key'; } return await _prefs.remove(storeKey); } diff --git a/lib/store/auth.store.dart b/lib/store/auth.store.dart index 23fd73b..dcb0bd7 100644 --- a/lib/store/auth.store.dart +++ b/lib/store/auth.store.dart @@ -63,59 +63,49 @@ class AuthStore extends GetxController { } Future logout({bool force = false}) async { - await LoadingUtil.show(status: 'Logout...'); + LoadingUtil.show(status: 'Logout...'); await StorageService.to.remove(CacheKeys.token, isWithUser: false); await StorageService.to.remove(CacheKeys.userInfo, isWithUser: false); try { - final response = await Api.logout(); - if (response.data != null) { - LoggerUtil().info('[Store-Auth] Logout succeed.'); - if (Get.context != null) Get.offAllNamed(RouteConfig.login); - } + // final response = await Api.logout(); + // if (response.data != null) { + LoggerUtil().info('[Store-Auth] Logout succeed.'); + if (Get.context != null) Get.offAllNamed(RouteConfig.login); + // } } catch (e) { } finally { LoadingUtil.dismiss(); } } - Future login(LoginEnum type, {String? identityToken}) async { + Future login( + {required String username, required String password}) async { Dio.Response response; - if (type == LoginEnum.fastLogin && - StorageService.to.getString(CacheKeys.deviceUUID, isWithUser: false) == - null) { - SnackBarUtil().error('Need DeviceUUID. Please restart app.'); - return; - } + // if (type == LoginEnum.fastLogin && + // StorageService.to.getString(CacheKeys.deviceUUID, isWithUser: false) == + // null) { + // SnackBarUtil().error('Need DeviceUUID. Please restart app.'); + // return; + // } LoadingUtil.show(status: 'Login...'); - // Hide keyboard TapToDismissKeyboard.dismissOf(context: Get.context!); try { - response = await Api.login( - '4', - type == LoginEnum.fastLogin - ? (StorageService.to - .getString(CacheKeys.deviceUUID, isWithUser: false)) - : identityToken); - + await Future.delayed(const Duration(seconds: 1)); + response = await Api.login(username, password); if (response.data != null) { final auth = Auth.fromJson(response.data['data']); + if (auth.token != null) { await StorageService.to .setString(CacheKeys.token, auth.token!, isWithUser: false); } - if (auth.userInfo != null) { - userInfo(auth.userInfo!); - await StorageService.to.setString( - CacheKeys.userInfo, jsonEncode(auth.userInfo), - isWithUser: false); - LoggerUtil().info('[Store-Auth] Login succeed.'); - } + await getUserInfo(); Get.offNamed(RouteConfig.home); - getCommonInfo(); + // getCommonInfo(); } } catch (e) { - SnackBarUtil().error('${e}'); + await SnackBarUtil().error('账号密码错误'); } finally { LoadingUtil.dismiss(); } @@ -130,7 +120,7 @@ class AuthStore extends GetxController { Future getUserInfo() async { await LoadingUtil.show(status: 'Loading...'); try { - final response = await Api.getUserInfo(userInfo.value.userId!); + final response = await Api.getUserInfo(); if (response.data != null) { UserInfoModel userInfo = UserInfoModel.fromJson(response.data['data']); await updateUserInfoState(userInfo); diff --git a/lib/util/loading_util.dart b/lib/util/loading_util.dart index eb1f792..13b4595 100644 --- a/lib/util/loading_util.dart +++ b/lib/util/loading_util.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:sk_base_mobile/app_theme.dart'; +import 'package:sk_base_mobile/util/screen_adaper_util.dart'; -/// Loading工具 class LoadingUtil { - LoadingUtil() {} - init() {} + LoadingUtil(); static Future show({String? status}) async { return showLoading(status: status ?? 'Loading...'); @@ -14,27 +15,35 @@ class LoadingUtil { return hideLoading(); } - static showLoading({String? status}) { - Get.dialog( - GestureDetector( - child: Container( - color: Colors.black54, - child: const Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation(Colors.white), - ), - ), - ), - onTap: () { - // 点击是否退出模态框 - Get.back(); - }, - ), + static showLoading({String? status}) async { + await showDialog( + context: Get.context!, + barrierColor: AppTheme.barrierColor, barrierDismissible: false, + builder: (BuildContext context) { + return WillPopScope( + onWillPop: () async => false, + child: GestureDetector( + child: Container( + color: Colors.black54, + child: Center( + child: LoadingAnimationWidget.fourRotatingDots( + color: AppTheme.primaryColor, + size: ScreenAdaper.sp(50), + ), + ), + ), + onTap: () { + // 点击是否退出模态框 + // Navigator.of(context).pop(); + }, + ), + ); + }, ); } static hideLoading() { - Get.back(); + Navigator.of(Get.context!).pop(); } } diff --git a/lib/util/snack_bar.util.dart b/lib/util/snack_bar.util.dart index 649188d..be2a37e 100644 --- a/lib/util/snack_bar.util.dart +++ b/lib/util/snack_bar.util.dart @@ -2,6 +2,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sk_base_mobile/app_theme.dart'; +import 'package:sk_base_mobile/util/screen_adaper_util.dart'; // SnackBar 工具 class SnackBarUtil { @@ -25,13 +26,18 @@ class SnackBarUtil { await Get.closeCurrentSnackbar(); } Get.rawSnackbar( - message: title, snackPosition: SnackPosition.TOP, backgroundColor: AppTheme.snackbarErrorBackgroudColor, - borderRadius: 15, - margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0), + borderRadius: ScreenAdaper.sp(15), + messageText: Text( + '$title', + style: TextStyle( + fontSize: ScreenAdaper.sp(25), color: AppTheme.nearlyWhite), + ), + margin: EdgeInsets.symmetric( + horizontal: ScreenAdaper.width(20), vertical: 0), overlayColor: Colors.white, - duration: Duration(seconds: 3), + duration: const Duration(seconds: 3), forwardAnimationCurve: Curves.fastLinearToSlowEaseIn, reverseAnimationCurve: Curves.linearToEaseOut); } diff --git a/lib/widgets/my_avatar.dart b/lib/widgets/my_avatar.dart index 96ac159..9e7107a 100644 --- a/lib/widgets/my_avatar.dart +++ b/lib/widgets/my_avatar.dart @@ -51,7 +51,7 @@ class MyAvatarWidget extends StatelessWidget { return _controller.uploadImgFilePath.value.isNotEmpty ? FileImage(File(_controller.uploadImgFilePath.value)) : NetworkImage( - AuthStore.to.userInfo.value.avatarThumbUrl ?? '', + AuthStore.to.userInfo.value.avatar ?? '', ); } // Widget getShowImg() {