v2.1.1
This commit is contained in:
parent
22c6a0c771
commit
a7bbcd4eaa
|
|
@ -4,12 +4,23 @@ import 'package:didvan/providers/media.dart';
|
|||
import 'package:didvan/providers/theme.dart';
|
||||
import 'package:didvan/providers/user.dart';
|
||||
import 'package:didvan/routes/route_generator.dart';
|
||||
import 'package:didvan/services/app_initalizer.dart';
|
||||
import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
void main() {
|
||||
void main() async {
|
||||
await Firebase.initializeApp();
|
||||
final initMsg = await FirebaseMessaging.instance.getInitialMessage();
|
||||
if (initMsg != null) {
|
||||
AppInitializer.clickAction = initMsg.data['click_action'].replaceAll(
|
||||
'navigate-',
|
||||
'',
|
||||
);
|
||||
}
|
||||
runApp(const Didvan());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,14 @@ import 'package:didvan/utils/action_sheet.dart';
|
|||
class UserProvider extends CoreProvier {
|
||||
late User user;
|
||||
bool isAuthenticated = false;
|
||||
int _unreadMessageCount = 0;
|
||||
|
||||
set unreadMessageCount(int value) {
|
||||
_unreadMessageCount = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
int get unreadMessageCount => _unreadMessageCount;
|
||||
|
||||
static final List<MapEntry> _radarMarkQueue = [];
|
||||
static final List<MapEntry> _newsMarkQueue = [];
|
||||
|
|
@ -211,4 +219,12 @@ class UserProvider extends CoreProvier {
|
|||
_statisticMarkQueue.removeWhere((element) => element.key == id);
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> getUnreadMessageCount() async {
|
||||
final RequestService service = RequestService(RequestHelper.directs);
|
||||
await service.httpGet();
|
||||
if (service.isSuccess) {
|
||||
_unreadMessageCount = service.result['unread'] ?? 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:path_provider/path_provider.dart';
|
|||
|
||||
class AppInitializer {
|
||||
static String? fcmToken;
|
||||
static String? clickAction;
|
||||
|
||||
static Future<void> setupServices() async {
|
||||
if (!kIsWeb) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
import 'package:didvan/config/design_config.dart';
|
||||
import 'package:didvan/models/requests/news.dart';
|
||||
import 'package:didvan/models/requests/radar.dart';
|
||||
import 'package:didvan/models/requests/studio.dart';
|
||||
import 'package:didvan/services/app_initalizer.dart';
|
||||
import 'package:didvan/views/home/home_state.dart';
|
||||
import 'package:didvan/views/home/news/news.dart';
|
||||
import 'package:didvan/views/home/radar/radar.dart';
|
||||
import 'package:didvan/views/home/settings/settings.dart';
|
||||
import 'package:didvan/views/home/statistic/statistic.dart';
|
||||
import 'package:didvan/views/home/studio/studio.dart';
|
||||
import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart';
|
||||
import 'package:didvan/views/widgets/didvan/bnb.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
|
@ -26,6 +31,25 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
|
|||
_tabController.addListener(() {
|
||||
context.read<HomeState>().currentPageIndex = _tabController.index;
|
||||
});
|
||||
// if (AppInitializer.clickAction != null) {
|
||||
// final clickAction = AppInitializer.clickAction!;
|
||||
// String routeName = '';
|
||||
// if (clickAction.contains('podcast')) {
|
||||
// context.read<StudioDetailsState>().getStudioDetails();
|
||||
// return;
|
||||
// }
|
||||
// Navigator.of(context).pushNamed(
|
||||
// clickAction.split('-').first,
|
||||
// arguments: {
|
||||
// 'id': clickAction.split('-')[1],
|
||||
// 'args': clickAction.contains('radar')
|
||||
// ? const RadarRequestArgs(page: 0)
|
||||
// : clickAction.contains('news')
|
||||
// ? const NewsRequestArgs(page: 0)
|
||||
// : const StudioRequestArgs(page: 0),
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
super.initState();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:didvan/config/theme_data.dart';
|
||||
import 'package:didvan/constants/app_icons.dart';
|
||||
import 'package:didvan/models/chat_room/chat_room.dart';
|
||||
import 'package:didvan/providers/user.dart';
|
||||
import 'package:didvan/routes/routes.dart';
|
||||
import 'package:didvan/utils/date_time.dart';
|
||||
import 'package:didvan/views/home/settings/direct_list/direct_list_state.dart';
|
||||
|
|
@ -26,6 +27,7 @@ class ChatRoomItem extends StatelessWidget {
|
|||
int unreadCount = chatRoom.unread;
|
||||
chatRoom.unread = 0;
|
||||
state.unreadCount -= unreadCount;
|
||||
context.read<UserProvider>().unreadMessageCount -= unreadCount;
|
||||
},
|
||||
child: Container(
|
||||
color: Colors.transparent,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:didvan/config/theme_data.dart';
|
||||
import 'package:didvan/constants/app_icons.dart';
|
||||
import 'package:didvan/providers/theme.dart';
|
||||
import 'package:didvan/providers/user.dart';
|
||||
|
|
@ -5,6 +6,7 @@ import 'package:didvan/routes/routes.dart';
|
|||
import 'package:didvan/services/storage/storage.dart';
|
||||
import 'package:didvan/views/home/widgets/logo_app_bar.dart';
|
||||
import 'package:didvan/views/home/widgets/menu_item.dart';
|
||||
import 'package:didvan/views/widgets/didvan/badge.dart';
|
||||
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||
|
|
@ -33,11 +35,27 @@ class Settings extends StatelessWidget {
|
|||
DidvanCard(
|
||||
child: Column(
|
||||
children: [
|
||||
MenuOption(
|
||||
title: 'پیامها',
|
||||
icon: DidvanIcons.message_regular,
|
||||
onTap: () =>
|
||||
Navigator.of(context).pushNamed(Routes.directList),
|
||||
Consumer<UserProvider>(
|
||||
child: Icon(
|
||||
DidvanIcons.angle_left_regular,
|
||||
size: 18,
|
||||
color: Theme.of(context).colorScheme.title,
|
||||
),
|
||||
builder: (context, state, child) => MenuOption(
|
||||
title: 'پیامها',
|
||||
icon: DidvanIcons.message_regular,
|
||||
onTap: () =>
|
||||
Navigator.of(context).pushNamed(Routes.directList),
|
||||
trailing: Row(
|
||||
children: [
|
||||
if (state.unreadMessageCount != 0)
|
||||
DidvanBadge(
|
||||
text: state.unreadMessageCount.toString(),
|
||||
),
|
||||
child!,
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ class StatisticDetailsState extends CoreProvier {
|
|||
double.parse(value.replaceAll(',', ''));
|
||||
|
||||
Future<void> getRelatedContents() async {
|
||||
if (relatedContents!.isNotEmpty) return;
|
||||
if (relatedContents?.isNotEmpty ?? true) return;
|
||||
final service = RequestService(RequestHelper.tag(
|
||||
ids: tags.map((tag) => tag.id).toList(),
|
||||
));
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ class _SplashState extends State<Splash> {
|
|||
}
|
||||
RequestService.token = token;
|
||||
final result = await userProvider.getUserInfo();
|
||||
await userProvider.getUnreadMessageCount();
|
||||
if (!result) {
|
||||
StorageService.delete(key: 'token');
|
||||
Navigator.of(context).pushNamedAndRemoveUntil(
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:didvan/config/design_config.dart';
|
|||
import 'package:didvan/config/theme_data.dart';
|
||||
import 'package:didvan/constants/app_icons.dart';
|
||||
import 'package:didvan/models/enums.dart';
|
||||
import 'package:didvan/providers/user.dart';
|
||||
import 'package:didvan/services/media/media.dart';
|
||||
import 'package:didvan/utils/action_sheet.dart';
|
||||
import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart';
|
||||
|
|
@ -82,6 +83,8 @@ class DidvanBNB extends StatelessWidget {
|
|||
onTap: () => onTabChanged(3),
|
||||
),
|
||||
_NavBarItem(
|
||||
hasBadge:
|
||||
context.watch<UserProvider>().unreadMessageCount != 0,
|
||||
isSelected: currentTabIndex == 4,
|
||||
title: 'تنظیمات',
|
||||
selectedIcon: DidvanIcons.setting_solid,
|
||||
|
|
@ -360,6 +363,7 @@ class _NavBarItem extends StatelessWidget {
|
|||
final String title;
|
||||
final IconData selectedIcon;
|
||||
final IconData unselectedIcon;
|
||||
final bool hasBadge;
|
||||
const _NavBarItem({
|
||||
Key? key,
|
||||
required this.isSelected,
|
||||
|
|
@ -367,6 +371,7 @@ class _NavBarItem extends StatelessWidget {
|
|||
required this.selectedIcon,
|
||||
required this.unselectedIcon,
|
||||
required this.onTap,
|
||||
this.hasBadge = false,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
|
|
@ -397,12 +402,25 @@ class _NavBarItem extends StatelessWidget {
|
|||
? Theme.of(context).colorScheme.focused
|
||||
: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
child: Icon(
|
||||
isSelected ? selectedIcon : unselectedIcon,
|
||||
size: 32,
|
||||
color: DesignConfig.isDark
|
||||
? Theme.of(context).colorScheme.text
|
||||
: Theme.of(context).colorScheme.title,
|
||||
child: Stack(
|
||||
children: [
|
||||
Icon(
|
||||
isSelected ? selectedIcon : unselectedIcon,
|
||||
size: 32,
|
||||
color: DesignConfig.isDark
|
||||
? Theme.of(context).colorScheme.text
|
||||
: Theme.of(context).colorScheme.title,
|
||||
),
|
||||
if (hasBadge)
|
||||
Container(
|
||||
height: 12,
|
||||
width: 12,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
DidvanText(
|
||||
|
|
|
|||
|
|
@ -279,6 +279,9 @@ class _DidvanPageViewState extends State<DidvanPageView> {
|
|||
margin: EdgeInsets.zero,
|
||||
padding: EdgeInsets.zero,
|
||||
),
|
||||
'a': Style(
|
||||
textAlign: TextAlign.left,
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -795,7 +795,7 @@ packages:
|
|||
name: url_launcher
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.1.2"
|
||||
version: "6.1.3"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -914,7 +914,7 @@ packages:
|
|||
name: webview_flutter_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.8.10"
|
||||
version: "2.8.11"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
Loading…
Reference in New Issue