fix: 动态未读标记

This commit is contained in:
guozhigq
2024-05-07 00:01:44 +08:00
parent c9b62b74c0
commit 32f392af64
2 changed files with 67 additions and 67 deletions

View File

@ -40,10 +40,10 @@ class MainController extends GetxController {
dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( dynamicBadgeType.value = DynamicBadgeMode.values[setting.get(
SettingBoxKey.dynamicBadgeMode, SettingBoxKey.dynamicBadgeMode,
defaultValue: DynamicBadgeMode.number.code)]; defaultValue: DynamicBadgeMode.number.code)];
setNavBarConfig();
if (dynamicBadgeType.value != DynamicBadgeMode.hidden) { if (dynamicBadgeType.value != DynamicBadgeMode.hidden) {
getUnreadDynamic(); getUnreadDynamic();
} }
setNavBarConfig();
} }
void onBackPressed(BuildContext context) { void onBackPressed(BuildContext context) {

View File

@ -126,82 +126,82 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
}, },
children: _mainController.pages, children: _mainController.pages,
), ),
bottomNavigationBar: StreamBuilder( bottomNavigationBar: _mainController.navigationBars.length > 1
stream: _mainController.hideTabBar ? StreamBuilder(
? _mainController.bottomBarStream.stream.distinct() stream: _mainController.hideTabBar
: StreamController<bool>.broadcast().stream, ? _mainController.bottomBarStream.stream.distinct()
initialData: true, : StreamController<bool>.broadcast().stream,
builder: (context, AsyncSnapshot snapshot) { initialData: true,
return AnimatedSlide( builder: (context, AsyncSnapshot snapshot) {
curve: Curves.easeInOutCubicEmphasized, return AnimatedSlide(
duration: const Duration(milliseconds: 500), curve: Curves.easeInOutCubicEmphasized,
offset: Offset(0, snapshot.data ? 0 : 1), duration: const Duration(milliseconds: 500),
child: Obx( offset: Offset(0, snapshot.data ? 0 : 1),
() => GlobalData().enableMYBar child: GlobalData().enableMYBar
? NavigationBar( ? Obx(
onDestinationSelected: (value) => setIndex(value), () => NavigationBar(
selectedIndex: _mainController.selectedIndex, onDestinationSelected: (value) => setIndex(value),
destinations: <Widget>[ selectedIndex: _mainController.selectedIndex,
..._mainController.navigationBars.map((e) { destinations: <Widget>[
return NavigationDestination( ..._mainController.navigationBars.map((e) {
icon: Obx( return NavigationDestination(
() => Badge( icon: Badge(
label: label: _mainController
_mainController.dynamicBadgeType.value == .dynamicBadgeType.value ==
DynamicBadgeMode.number DynamicBadgeMode.number
? Text(e['count'].toString()) ? Text(e['count'].toString())
: null, : null,
padding: padding:
const EdgeInsets.fromLTRB(6, 0, 6, 0), const EdgeInsets.fromLTRB(6, 0, 6, 0),
isLabelVisible: isLabelVisible: _mainController
_mainController.dynamicBadgeType.value != .dynamicBadgeType.value !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&
e['count'] > 0, e['count'] > 0,
child: e['icon'], child: e['icon'],
), ),
), selectedIcon: e['selectIcon'],
selectedIcon: e['selectIcon'], label: e['label'],
label: e['label'], );
); }).toList(),
}).toList(), ],
], ),
) )
: BottomNavigationBar( : Obx(
currentIndex: _mainController.selectedIndex, () => BottomNavigationBar(
type: BottomNavigationBarType.fixed, currentIndex: _mainController.selectedIndex,
onTap: (value) => setIndex(value), type: BottomNavigationBarType.fixed,
iconSize: 16, onTap: (value) => setIndex(value),
selectedFontSize: 12, iconSize: 16,
unselectedFontSize: 12, selectedFontSize: 12,
items: [ unselectedFontSize: 12,
..._mainController.navigationBars.map((e) { items: [
return BottomNavigationBarItem( ..._mainController.navigationBars.map((e) {
icon: Obx( return BottomNavigationBarItem(
() => Badge( icon: Badge(
label: label: _mainController
_mainController.dynamicBadgeType.value == .dynamicBadgeType.value ==
DynamicBadgeMode.number DynamicBadgeMode.number
? Text(e['count'].toString()) ? Text(e['count'].toString())
: null, : null,
padding: padding:
const EdgeInsets.fromLTRB(6, 0, 6, 0), const EdgeInsets.fromLTRB(6, 0, 6, 0),
isLabelVisible: isLabelVisible: _mainController
_mainController.dynamicBadgeType.value != .dynamicBadgeType.value !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&
e['count'] > 0, e['count'] > 0,
child: e['icon'], child: e['icon'],
), ),
), activeIcon: e['selectIcon'],
activeIcon: e['selectIcon'], label: e['label'],
label: e['label'], );
); }).toList(),
}).toList(), ],
], ),
), ),
), );
); },
}, )
), : null,
), ),
); );
} }