Skip to content

Commit e944969

Browse files
committed
feat: mobile: version notice with badges
1 parent 837d8ba commit e944969

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

lib/components/main_settings_component.dart

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:geek_chat/models/locale_model.dart';
77
import 'package:geek_chat/models/theme.dart';
88
import 'package:get/get.dart';
99
import 'package:logger/logger.dart';
10+
import 'package:badges/badges.dart' as badges;
1011

1112
// ignore: must_be_immutable
1213
class SettingsComponent extends StatelessWidget {
@@ -140,10 +141,7 @@ class SettingsComponent extends StatelessWidget {
140141
crossAxisAlignment: CrossAxisAlignment.start,
141142
children: [
142143
Text("About".tr),
143-
Text(
144-
"${'Version'.tr}, v${controller.packageInfo.version} ",
145-
style: const TextStyle(fontSize: 12),
146-
)
144+
getVersionWidget(controller),
147145
],
148146
),
149147
leading: const Icon(Icons.info_outline),
@@ -156,4 +154,19 @@ class SettingsComponent extends StatelessWidget {
156154
];
157155
return menus;
158156
}
157+
158+
Widget getVersionWidget(SettingsController controller) {
159+
Widget widget = Text(
160+
"${'Version'.tr}, v${controller.packageInfo.version} ",
161+
style: const TextStyle(fontSize: 12),
162+
);
163+
if (controller.hasNewVersion) {
164+
return badges.Badge(
165+
position: badges.BadgePosition.topEnd(top: 0, end: -12),
166+
showBadge: true,
167+
child: widget,
168+
);
169+
}
170+
return widget;
171+
}
159172
}

lib/pages/mobile_home_page.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:geek_chat/controller/main_controller.dart';
66
import 'package:geek_chat/controller/settings.dart';
77
import 'package:geek_chat/controller/tracker_controller.dart';
88
import 'package:get/get.dart';
9+
import 'package:badges/badges.dart' as badges;
910

1011
// ignore: must_be_immutable
1112
class MobileHomePage extends StatelessWidget {
@@ -98,7 +99,7 @@ class MobileHomePage extends StatelessWidget {
9899
label: 'Prompts'.tr,
99100
),
100101
BottomNavigationBarItem(
101-
icon: const Icon(Icons.settings),
102+
icon: getSettingsIcon(),
102103
label: 'Settings'.tr,
103104
)
104105
],
@@ -109,4 +110,16 @@ class MobileHomePage extends StatelessWidget {
109110
}),
110111
);
111112
}
113+
114+
Widget getSettingsIcon() {
115+
Widget widget = const Icon(Icons.settings);
116+
if (settingsController.hasNewVersion) {
117+
return badges.Badge(
118+
position: badges.BadgePosition.topEnd(top: 0, end: -12),
119+
showBadge: true,
120+
child: widget,
121+
);
122+
}
123+
return widget;
124+
}
112125
}

0 commit comments

Comments
 (0)