import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class NotificationsPage extends StatelessWidget { int currentIndex = 0; @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); AppGlobal.context = context; return BaseView( onModelReady: (model) { GetNotificationsRequestModel getNotificationsRequestModel = new GetNotificationsRequestModel( currentPage: currentIndex, pagingSize: 14, notificationStatusID: 2); model.getNotifications(getNotificationsRequestModel, context); }, builder: (_, model, widget) => AppScaffold( isShowAppBar: true, showNewAppBar: true, showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).notifications, baseViewModel: model, body: ListView.separated( itemBuilder: (context, index) { if (index == model.notifications.length) { return InkWell( onTap: () async { GifLoaderDialogUtils.showMyDialog(context); currentIndex++; GetNotificationsRequestModel getNotificationsRequestModel = new GetNotificationsRequestModel( currentPage: currentIndex, pagingSize: 14, notificationStatusID: 2); await model.getNotifications( getNotificationsRequestModel, context); GifLoaderDialogUtils.hideDialog(context); }, child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ // Image.asset('assets/images/notf.png'), Icon( Icons.notifications_active, color: CustomColors.accentColor, size: 40, ), Padding( padding: const EdgeInsets.only(left: 10.0, right: 10.0), child: Text(TranslationBase.of(context).moreNotifications, style: TextStyle( color: CustomColors.accentColor, fontWeight: FontWeight.w600, letterSpacing: -0.64, decoration: TextDecoration.underline )), ), ], ), ), ); } return InkWell( onTap: () async { if (!model.notifications[index].isRead) { model.markAsRead(model.notifications[index].id); } Navigator.push( context, FadePage( page: NotificationsDetailsPage( notification: model.notifications[index], ))); }, child: Container( width: double.infinity, padding: EdgeInsets.all(8.0), decoration: BoxDecoration( color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor.withOpacity(0.05), border: projectViewModel.isArabic ? Border( right: BorderSide( color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor, width: 5.0, ), ) : Border( left: BorderSide( color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor, width: 5.0, ), ), ), child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(DateUtil.getDayMonthYearDateFormatted( DateUtil.convertStringToDate(model .notifications[index].createdOn)) + " " + DateUtil.formatDateToTimeLang( DateUtil.convertStringToDate(model .notifications[index].createdOn), false)), SizedBox( height: 5, ), Row( children: [ Expanded( child: Texts(model .notifications[index].message)), if (model .notifications[index].messageType == "image") Icon( FontAwesomeIcons.images, color: CustomColors.grey, ) ], ), SizedBox( height: 5, ), ], ), ), ), ], ), ), ); }, separatorBuilder: (context, index) { return Column( children: [ Divider( color: Colors.grey[300], thickness: 2.0, ), ], ); }, itemCount: model.notifications.length + 1)), ); } }