From dd477247776839e04e09862257743ec506c25219 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Tue, 1 Oct 2024 18:48:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20navBar=E5=B1=95=E7=A4=BA=E5=A4=B4?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/main/controller.dart | 12 +++++++++++- lib/pages/main/view.dart | 29 +++++++++++++++-------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index ad2a7781..8a0e4418 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -5,6 +5,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; +import 'package:pilipala/common/widgets/network_img_layer.dart'; import 'package:pilipala/http/common.dart'; import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/utils.dart'; @@ -24,6 +25,7 @@ class MainController extends GetxController { late PageController pageController; int selectedIndex = 0; Box userInfoCache = GStrorage.userInfo; + dynamic userInfo; RxBool userLogin = false.obs; late Rx dynamicBadgeType = DynamicBadgeMode.number.obs; late bool enableGradientBg; @@ -37,7 +39,7 @@ class MainController extends GetxController { } hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: false); - var userInfo = userInfoCache.get('userInfoCache'); + userInfo = userInfoCache.get('userInfoCache'); userLogin.value = userInfo != null; dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( SettingBoxKey.dynamicBadgeMode, @@ -71,12 +73,20 @@ class MainController extends GetxController { } int dynamicItemIndex = navigationBars.indexWhere((item) => item['label'] == "动态"); + int mineItemIndex = + navigationBars.indexWhere((item) => item['label'] == "我的"); var res = await CommonHttp.unReadDynamic(); var data = res['data']; if (dynamicItemIndex != -1) { navigationBars[dynamicItemIndex]['count'] = data == null ? 0 : data.length; // 修改 count 属性为新的值 } + if (mineItemIndex != -1 && userInfo != null) { + Widget avatar = NetworkImgLayer( + width: 28, height: 28, src: userInfo.face, type: 'avatar'); + navigationBars[mineItemIndex]['icon'] = avatar; + navigationBars[mineItemIndex]['selectIcon'] = avatar; + } navigationBars.refresh(); } diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 825e65bc..93ee2d83 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -181,20 +181,21 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { destinations: [ ..._mainController.navigationBars.map((e) { return NavigationDestination( - icon: Badge( - label: _mainController - .dynamicBadgeType.value == - DynamicBadgeMode.number - ? Text(e['count'].toString()) - : null, - padding: - const EdgeInsets.fromLTRB(6, 0, 6, 0), - isLabelVisible: _mainController - .dynamicBadgeType.value != - DynamicBadgeMode.hidden && - e['count'] > 0, - child: e['icon'], - ), + icon: _mainController + .dynamicBadgeType.value == + DynamicBadgeMode.number + ? Badge( + label: Text(e['count'].toString()), + padding: const EdgeInsets.fromLTRB( + 6, 0, 6, 0), + isLabelVisible: _mainController + .dynamicBadgeType + .value != + DynamicBadgeMode.hidden && + e['count'] > 0, + child: e['icon'], + ) + : e['icon'], selectedIcon: e['selectIcon'], label: e['label'], );