feat: navBar展示头像

This commit is contained in:
guozhigq
2024-10-01 18:48:01 +08:00
parent c4f446e01e
commit dd47724777
2 changed files with 26 additions and 15 deletions

View File

@ -5,6 +5,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:pilipala/common/widgets/network_img_layer.dart';
import 'package:pilipala/http/common.dart'; import 'package:pilipala/http/common.dart';
import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/storage.dart';
import 'package:pilipala/utils/utils.dart'; import 'package:pilipala/utils/utils.dart';
@ -24,6 +25,7 @@ class MainController extends GetxController {
late PageController pageController; late PageController pageController;
int selectedIndex = 0; int selectedIndex = 0;
Box userInfoCache = GStrorage.userInfo; Box userInfoCache = GStrorage.userInfo;
dynamic userInfo;
RxBool userLogin = false.obs; RxBool userLogin = false.obs;
late Rx<DynamicBadgeMode> dynamicBadgeType = DynamicBadgeMode.number.obs; late Rx<DynamicBadgeMode> dynamicBadgeType = DynamicBadgeMode.number.obs;
late bool enableGradientBg; late bool enableGradientBg;
@ -37,7 +39,7 @@ class MainController extends GetxController {
} }
hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: false); hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: false);
var userInfo = userInfoCache.get('userInfoCache'); userInfo = userInfoCache.get('userInfoCache');
userLogin.value = userInfo != null; userLogin.value = userInfo != null;
dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( dynamicBadgeType.value = DynamicBadgeMode.values[setting.get(
SettingBoxKey.dynamicBadgeMode, SettingBoxKey.dynamicBadgeMode,
@ -71,12 +73,20 @@ class MainController extends GetxController {
} }
int dynamicItemIndex = int dynamicItemIndex =
navigationBars.indexWhere((item) => item['label'] == "动态"); navigationBars.indexWhere((item) => item['label'] == "动态");
int mineItemIndex =
navigationBars.indexWhere((item) => item['label'] == "我的");
var res = await CommonHttp.unReadDynamic(); var res = await CommonHttp.unReadDynamic();
var data = res['data']; var data = res['data'];
if (dynamicItemIndex != -1) { if (dynamicItemIndex != -1) {
navigationBars[dynamicItemIndex]['count'] = navigationBars[dynamicItemIndex]['count'] =
data == null ? 0 : data.length; // 修改 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(); navigationBars.refresh();
} }

View File

@ -181,20 +181,21 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
destinations: <Widget>[ destinations: <Widget>[
..._mainController.navigationBars.map((e) { ..._mainController.navigationBars.map((e) {
return NavigationDestination( return NavigationDestination(
icon: Badge( icon: _mainController
label: _mainController .dynamicBadgeType.value ==
.dynamicBadgeType.value == DynamicBadgeMode.number
DynamicBadgeMode.number ? Badge(
? Text(e['count'].toString()) label: Text(e['count'].toString()),
: null, padding: const EdgeInsets.fromLTRB(
padding: 6, 0, 6, 0),
const EdgeInsets.fromLTRB(6, 0, 6, 0), isLabelVisible: _mainController
isLabelVisible: _mainController .dynamicBadgeType
.dynamicBadgeType.value != .value !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&
e['count'] > 0, e['count'] > 0,
child: e['icon'], child: e['icon'],
), )
: e['icon'],
selectedIcon: e['selectIcon'], selectedIcon: e['selectIcon'],
label: e['label'], label: e['label'],
); );