From 5b8a67131f6d78547c11a426a2062b428088e873 Mon Sep 17 00:00:00 2001 From: PGAN-MIS Date: Tue, 5 Sep 2023 16:44:48 +0800 Subject: [PATCH] fix attachment error and display image in basic info --- .../profile/education/education_bloc.dart | 3 +- .../profile/eligibility/eligibility_bloc.dart | 2 +- .../learning_development_bloc.dart | 2 +- .../learning_development_view_attachment.dart | 4 +- .../profile/shared/single_attachment.dart | 6 +- .../module_objects/module_objects_screen.dart | 4 +- lib/screens/superadmin/role/role_screen.dart | 64 ++++++++++++++----- .../role_extend/role_extend_screen.dart | 4 +- .../role_module/role_module_scree.dart | 4 +- lib/screens/unit2/basic-info/basic-info.dart | 31 +++++---- 10 files changed, 82 insertions(+), 42 deletions(-) diff --git a/lib/bloc/profile/education/education_bloc.dart b/lib/bloc/profile/education/education_bloc.dart index dd7374c..5795d7e 100644 --- a/lib/bloc/profile/education/education_bloc.dart +++ b/lib/bloc/profile/education/education_bloc.dart @@ -219,8 +219,7 @@ class EducationBloc extends Bloc { } }); on((event, emit) { - String fileUrl = - '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(EducationAttachmentViewState( fileUrl: fileUrl, fileName: event.fileName)); }); diff --git a/lib/bloc/profile/eligibility/eligibility_bloc.dart b/lib/bloc/profile/eligibility/eligibility_bloc.dart index a714bc9..bd62e6c 100644 --- a/lib/bloc/profile/eligibility/eligibility_bloc.dart +++ b/lib/bloc/profile/eligibility/eligibility_bloc.dart @@ -290,7 +290,7 @@ class EligibilityBloc extends Bloc { } }); on((event,emit){ - String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(EligibilityAttachmentViewState(fileUrl: fileUrl,fileName: event.filename)); }); on((event, emit) async { diff --git a/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart b/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart index ad53010..c02604d 100644 --- a/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart +++ b/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart @@ -334,7 +334,7 @@ class LearningDevelopmentBloc } }); on((event,emit){ - String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(LearningAndDevelopmentAttachmentViewState(fileUrl: fileUrl, filename: event.filename)); }); on((event, emit) async { diff --git a/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart b/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart index e86086a..79812ac 100644 --- a/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart +++ b/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart @@ -81,8 +81,8 @@ class _LearningDevelopmentViewAttachmentState ), imageUrl: state.fileUrl, width: double.infinity, - height: 220, - fit: BoxFit.cover, + + fit: BoxFit.fitHeight, ), ), ); diff --git a/lib/screens/profile/shared/single_attachment.dart b/lib/screens/profile/shared/single_attachment.dart index 3f790da..7e1b9a0 100644 --- a/lib/screens/profile/shared/single_attachment.dart +++ b/lib/screens/profile/shared/single_attachment.dart @@ -1,11 +1,9 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - import '../../../model/profile/attachment.dart'; import '../../../theme-data.dart/box_shadow.dart'; import '../../../theme-data.dart/colors.dart'; -import '../../../utils/alerts.dart'; class SingleAttachment extends StatelessWidget { final Function()? onpressed; @@ -36,9 +34,9 @@ class SingleAttachment extends StatelessWidget { child: GestureDetector( onTap: view, - child: AutoSizeText( + child: Text( attachment.filename!, - wrapWords: false, + maxLines: 1, ), ), diff --git a/lib/screens/superadmin/module_objects/module_objects_screen.dart b/lib/screens/superadmin/module_objects/module_objects_screen.dart index e63f33c..30007d0 100644 --- a/lib/screens/superadmin/module_objects/module_objects_screen.dart +++ b/lib/screens/superadmin/module_objects/module_objects_screen.dart @@ -264,13 +264,13 @@ class RbacModuleObjectsScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( moduleObjects.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/superadmin/role/role_screen.dart b/lib/screens/superadmin/role/role_screen.dart index 5c65a71..03e055c 100644 --- a/lib/screens/superadmin/role/role_screen.dart +++ b/lib/screens/superadmin/role/role_screen.dart @@ -5,10 +5,12 @@ import 'package:flutter_form_builder/flutter_form_builder.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:form_builder_validators/form_builder_validators.dart'; +import 'package:search_page/search_page.dart'; import 'package:unit2/bloc/rbac/rbac_operations/role/role_bloc.dart'; import 'package:unit2/screens/superadmin/role/shared_pop_up_menu.dart'; import 'package:unit2/widgets/Leadings/add_leading.dart'; import 'package:unit2/widgets/error_state.dart'; +import '../../../model/rbac/rbac.dart'; import '../../../theme-data.dart/box_shadow.dart'; import '../../../theme-data.dart/btn-style.dart'; import '../../../theme-data.dart/colors.dart'; @@ -24,12 +26,38 @@ class RbacRoleScreen extends StatelessWidget { @override Widget build(BuildContext context) { final formKey = GlobalKey(); + List roles = []; return Scaffold( appBar: AppBar( centerTitle: true, backgroundColor: primary, title: const Text("Role Screen"), actions: [ + IconButton( + onPressed: () { + showSearch( + context: context, + delegate: SearchPage( + barTheme: ThemeData(cardColor: primary), + builder: (RBAC rbac) { + return ListTile( + title: Text(rbac.name!), + ); + }, + filter: (RBAC rbac) { + return [rbac.name]; + }, + failure: const Center( + child: Text("No Role found :("), + ), + items: roles, + searchLabel: "Search Role", + suggestion: const Center( + child: Text("Search role by name"), + )), + ); + }, + icon: const Icon(Icons.search)), AddLeading(onPressed: () { BuildContext parent = context; showDialog( @@ -174,6 +202,7 @@ class RbacRoleScreen extends StatelessWidget { final parent = context; if (state is RoleLoadedState) { if (state.roles.isNotEmpty) { + roles = state.roles; return ListView.builder( padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), @@ -190,20 +219,24 @@ class RbacRoleScreen extends StatelessWidget { children: [ Expanded( child: Row( - children: [ - CircleAvatar(child: Text('${index+1}'),), - const SizedBox(width: 12,), - Flexible( - child: Text(state.roles[index].name!, - style: Theme.of(context) - .textTheme - .titleMedium! - .copyWith( - fontWeight: FontWeight.w500, - color: primary)), - ), - ], - )), + children: [ + CircleAvatar( + child: Text('${index + 1}'), + ), + const SizedBox( + width: 12, + ), + Flexible( + child: Text(state.roles[index].name!, + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith( + fontWeight: FontWeight.w500, + color: primary)), + ), + ], + )), AppPopupMenu( offset: const Offset(-10, -10), elevation: 3, @@ -360,7 +393,8 @@ class RbacRoleScreen extends StatelessWidget { } if (state is RoleErrorState) { return SomethingWentWrong( - message: state.message, onpressed: () { + message: state.message, + onpressed: () { context.read().add(GetRoles()); }); } diff --git a/lib/screens/superadmin/role_extend/role_extend_screen.dart b/lib/screens/superadmin/role_extend/role_extend_screen.dart index ffe490c..2640660 100644 --- a/lib/screens/superadmin/role_extend/role_extend_screen.dart +++ b/lib/screens/superadmin/role_extend/role_extend_screen.dart @@ -262,13 +262,13 @@ class RbacRoleExtendScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( rolesExtend.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/superadmin/role_module/role_module_scree.dart b/lib/screens/superadmin/role_module/role_module_scree.dart index 1f3b199..a71ae81 100644 --- a/lib/screens/superadmin/role_module/role_module_scree.dart +++ b/lib/screens/superadmin/role_module/role_module_scree.dart @@ -252,13 +252,13 @@ class RbacRoleModuleScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( roleModules.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/unit2/basic-info/basic-info.dart b/lib/screens/unit2/basic-info/basic-info.dart index 07539a4..578cc7d 100644 --- a/lib/screens/unit2/basic-info/basic-info.dart +++ b/lib/screens/unit2/basic-info/basic-info.dart @@ -1,3 +1,4 @@ +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; @@ -13,6 +14,7 @@ import 'package:unit2/utils/global.dart'; import 'package:unit2/utils/text_container.dart'; import '../../../bloc/user/user_bloc.dart'; import '../../../theme-data.dart/colors.dart'; +import '../../../utils/urls.dart'; import '../../../widgets/splash_screen.dart'; import '../signature/signature_pad.dart'; import './components/cover-image.dart'; @@ -29,7 +31,9 @@ class BasicInfo extends StatelessWidget { child: ProgressHUD( child: BlocBuilder( builder: (context, state) { + if (state is UserLoggedIn) { + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${ state.userData!.employeeInfo!.profile!.photoPath!}'; state.userData!.employeeInfo!.profile!.sex!.toUpperCase(); return SafeArea( child: Scaffold( @@ -47,17 +51,22 @@ class BasicInfo extends StatelessWidget { child: Stack( alignment: Alignment.center, children: [ - const CircleAvatar( - radius: 72, - backgroundColor: Colors.white, - ), - CircleAvatar( - radius: 69, - backgroundColor: Colors.grey.shade800, - child: SvgPicture.asset( - 'assets/svgs/male.svg', - ), - ), + + CachedNetworkImage( + imageUrl: fileUrl, + imageBuilder: (context, imageProvider) => Container( + width: 160, + height: 160, + decoration: BoxDecoration( + border: Border.all(color: third,width: 3), + shape: BoxShape.circle, + image: DecorationImage( + image: imageProvider, fit: BoxFit.cover), + ), + ), + placeholder: (context, url) => const CircularProgressIndicator(), + errorWidget: (context, url, error) =>const Icon(Icons.error), +), ], ), ),