feat: navBar展示头像
This commit is contained in:
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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'],
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user