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: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<DynamicBadgeMode> 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();
}

View File

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