This commit is contained in:
jantunesmesias 2024-08-26 09:46:02 -03:00
parent 27b5a9890a
commit 4006bc3566
3 changed files with 237 additions and 349 deletions

View File

@ -151,7 +151,6 @@ Future singInLoginAction(
AppState().userDevUUID = AppState().userDevUUID =
PhpGroup.loginCall.userDeviceId((loginCall.jsonBody ?? ''))!; PhpGroup.loginCall.userDeviceId((loginCall.jsonBody ?? ''))!;
AppState().name =
PhpGroup.loginCall.userName((loginCall.jsonBody ?? ''))!; PhpGroup.loginCall.userName((loginCall.jsonBody ?? ''))!;
AppState().serialNumber = await getSerialNumber() ?? ''; AppState().serialNumber = await getSerialNumber() ?? '';

View File

@ -83,6 +83,7 @@ class AppState extends ChangeNotifier {
await _safeInitAsync(() async { await _safeInitAsync(() async {
_devUUID = await secureStorage.getString('ff_devUUID') ?? _devUUID; _devUUID = await secureStorage.getString('ff_devUUID') ?? _devUUID;
}); });
await _safeInitAsync(() async { await _safeInitAsync(() async {
_email = await secureStorage.getString('ff_email') ?? _email; _email = await secureStorage.getString('ff_email') ?? _email;
}); });

View File

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
@ -9,7 +11,6 @@ import 'package:hub/components/organism_components/bottom_arrow_linked_locals_co
import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart'; import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart';
import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart'; import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart';
import 'package:hub/flutter_flow/custom_functions.dart'; import 'package:hub/flutter_flow/custom_functions.dart';
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/pages/home_page/home_page_model.dart'; import 'package:hub/pages/home_page/home_page_model.dart';
@ -28,17 +29,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
bool localStatus = false; bool localStatus = false;
final scaffoldKey = GlobalKey<ScaffoldState>(); final scaffoldKey = GlobalKey<ScaffoldState>();
@override void checkData() async {
void initState() {
super.initState();
_model = createModel(context, () => HomePageModel());
AppState().context = context;
() async {
await FirebaseMessagingService().updateDeviceToken();
}();
void fetchData() async {
final response = await PhpGroup.getDadosCall.call( final response = await PhpGroup.getDadosCall.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
@ -51,22 +42,37 @@ class _HomePageWidgetState extends State<HomePageWidget> {
if (response.jsonBody['error'] == false) { if (response.jsonBody['error'] == false) {
AppState().whatsapp = response.jsonBody['whatsapp']; AppState().whatsapp = response.jsonBody['whatsapp'];
AppState().provisional = response.jsonBody['provisional']; AppState().provisional = response.jsonBody['provisional'];
AppState().name = response.jsonBody['visitado']['VDO_NOME'];
} else { } else {
if (response.jsonBody['error_msg'] !=
r'''Usuario nao possui vinculo ativo com esse condominio''') {
log(response.jsonBody['error_msg']);
await DialogUtil.warningDefault(context) await DialogUtil.warningDefault(context)
.whenComplete(() => fetchData()); .whenComplete(() => checkData());
safeSetState(() {}); }
} }
break; break;
default: default:
await DialogUtil.warningDefault(context) await DialogUtil.warningDefault(context)
.whenComplete(() => fetchData()); .whenComplete(() => checkData());
safeSetState(() {}); safeSetState(() {});
break; break;
} }
} }
fetchData(); @override
void initState() {
super.initState();
_model = createModel(context, () => HomePageModel());
AppState().context = context;
() async {
await FirebaseMessagingService().updateDeviceToken();
}();
checkData();
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
localStatus = await checkLocals( localStatus = await checkLocals(
@ -115,7 +121,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
child: Scaffold( child: Scaffold(
key: scaffoldKey, key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
drawer: buildDrawer(context), // drawer: buildDrawer(context),
drawerEnableOpenDragGesture: true,
endDrawer: buildDrawer(context),
body: buildPage(context, localStatus), body: buildPage(context, localStatus),
), ),
); );
@ -152,6 +160,64 @@ class _HomePageWidgetState extends State<HomePageWidget> {
); );
} }
Widget createHeader(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 0.12,
decoration: const BoxDecoration(
color: Color(0xFF1AAB5F),
),
child: Align(
alignment: AlignmentDirectional.bottomCenter,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
const SizedBox(),
Row(
children: [
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: Image.asset(
'assets/images/logo.png',
width: 50.0,
height: 200.0,
fit: BoxFit.none,
),
),
Text(
'FRE ACCESS',
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily:
FlutterFlowTheme.of(context).bodyMediumFamily,
color: FlutterFlowTheme.of(context).info,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context).bodyMediumFamily),
),
),
],
),
Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(10.0, 0.0, 0.0, 0.0),
child: IconButton(
icon: const Icon(
Icons.menu_rounded,
color: Colors.white,
size: 28.0,
),
onPressed: () async {
scaffoldKey.currentState!.openEndDrawer();
},
),
),
],
),
),
);
}
Wrap createBody() { Wrap createBody() {
return Wrap( return Wrap(
spacing: 0.0, spacing: 0.0,
@ -202,173 +268,45 @@ class _HomePageWidgetState extends State<HomePageWidget> {
); );
} }
Row createHeader(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: Container(
width: 100.0,
height: 100.0,
decoration: const BoxDecoration(
color: Color(0xFF1AAB5F),
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Align(
alignment: const AlignmentDirectional(0.0, 1.0),
child: Container(
height: 50.0,
decoration: const BoxDecoration(),
child: Align(
alignment: const AlignmentDirectional(0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: FlutterFlowIconButton(
borderRadius: 20.0,
borderWidth: 1.0,
buttonSize: 40.0,
fillColor: FlutterFlowTheme.of(context).primary,
icon: const Icon(
Icons.menu_rounded,
color: Colors.white,
size: 28.0,
),
onPressed: () async {
scaffoldKey.currentState!.openDrawer();
},
),
),
),
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
60.0, 15.0, 0.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: Image.asset(
'assets/images/logo.png',
width: 50.0,
height: 200.0,
fit: BoxFit.none,
),
),
),
),
Align(
alignment: const AlignmentDirectional(0.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 15.0, 0.0, 0.0),
child: Text(
'FRE ACCESS',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
color: FlutterFlowTheme.of(context).info,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
),
),
],
),
),
),
),
// Align(
// alignment: const AlignmentDirectional(0.0, 1.0),
// child: Container(
// width: 100.0,
// height: 50.0,
// decoration: const BoxDecoration(),
// child: Align(
// alignment: const AlignmentDirectional(1.0, 1.0),
// child: FlutterFlowIconButton(
// borderRadius: 20.0,
// borderWidth: 1.0,
// buttonSize: 40.0,
// icon: Icon(
// Icons.notifications_sharp,
// color: FlutterFlowTheme.of(context).info,
// size: 24.0,
// ),
// onPressed: () {},
// ),
// ),
// ),
// ),
],
),
),
),
],
);
}
SizedBox buildDrawer(BuildContext context) { SizedBox buildDrawer(BuildContext context) {
return SizedBox( return SizedBox(
width: MediaQuery.of(context).size.width * 0.8, width: MediaQuery.of(context).size.width * 0.8,
child: Drawer( child: Drawer(
elevation: 16.0, elevation: 16.0,
child: Container( child: Container(
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).primaryBackground, color: FlutterFlowTheme.of(context).primaryBackground,
shape: BoxShape.rectangle,
),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( _buildDrawerHeader(context),
width: double.infinity, _buildSearchBar(context),
_buildDrawerBody(),
].addToStart(const SizedBox(height: 20)),
),
),
),
);
}
Container _buildDrawerHeader(BuildContext context) {
return Container(
decoration: const BoxDecoration( decoration: const BoxDecoration(
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(5.0), bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0), bottomRight: Radius.circular(5.0),
topLeft: Radius.circular(0.0),
topRight: Radius.circular(0.0),
), ),
shape: BoxShape.rectangle,
), ),
child: Column( child: Padding(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(30, 30, 10, 0), padding: const EdgeInsets.fromLTRB(30, 30, 10, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Flexible( Flexible(
fit: FlexFit.loose,
flex: 1,
child: Container( child: Container(
width: double.infinity,
decoration: const BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: 50.0, width: 50.0,
height: 50.0, height: 50.0,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
decoration: const BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
), ),
child: CachedNetworkImage( child: CachedNetworkImage(
@ -379,63 +317,53 @@ class _HomePageWidgetState extends State<HomePageWidget> {
width: 80.0, width: 80.0,
height: 80.0, height: 80.0,
fit: BoxFit.cover, fit: BoxFit.cover,
alignment: const Alignment(0.0, 0.0), alignment: Alignment.center,
placeholder: (context, url) => placeholder: (context, url) =>
Image.asset( Image.asset('assets/images/person.jpg'),
'assets/images/home.png'), errorListener: (_) => Image.asset('assets/images/person.jpg'),
errorListener: (_) => Image.asset(
'assets/images/home.png'),
errorWidget: (_, __, ___) => errorWidget: (_, __, ___) =>
Image.asset( Image.asset('assets/images/person.jpg'),
'assets/images/home.png'),
), ),
), ),
Container(
width: 150.0,
child: Text(
valueOrDefault<String>(
convertToUppercase(AppState().local),
'NOME DO LOCAL',
), ),
style: FlutterFlowTheme.of(context) SizedBox(width: 10),
.bodyLarge Expanded(
.override( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
convertToUppercase(AppState().name) ?? '',
style: FlutterFlowTheme.of(context).bodyLarge.override(
fontFamily: 'Nunito Sans', fontFamily: 'Nunito Sans',
color: color: FlutterFlowTheme.of(context).primaryText,
FlutterFlowTheme.of(context)
.primaryText,
fontSize: 14.0, fontSize: 14.0,
letterSpacing: 0.0, letterSpacing: 0.0,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
'Nunito Sans'),
), ),
), ),
), SizedBox(height: 5),
]), Text(
AppState().email,
style: FlutterFlowTheme.of(context).bodySmall.override(
fontFamily: 'Nunito Sans',
color: FlutterFlowTheme.of(context).primaryText,
fontSize: 12.0,
letterSpacing: 0.0,
fontWeight: FontWeight.normal,
), ),
), ),
] ],
.divide(const SizedBox(width: 0.0))
.around(const SizedBox(width: 0.0)),
), ),
), ),
].addToStart(const SizedBox(height: 30.0)), ],
), ),
), ),
Padding( );
padding: }
const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
child: Row( Padding _buildSearchBar(BuildContext context) {
mainAxisSize: MainAxisSize.min, return Padding(
mainAxisAlignment: MainAxisAlignment.start, padding: const EdgeInsets.symmetric(vertical: 10.0),
children: [
Flexible(
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
8.0, 0.0, 8.0, 0.0),
child: TextFormField( child: TextFormField(
controller: _model.textController, controller: _model.textController,
focusNode: _model.textFieldFocusNode, focusNode: _model.textFieldFocusNode,
@ -443,33 +371,11 @@ class _HomePageWidgetState extends State<HomePageWidget> {
obscureText: false, obscureText: false,
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
labelStyle: FlutterFlowTheme.of(context) labelText: 'Search',
.labelMedium prefixIcon: const Icon(Icons.search_sharp),
.override(
fontFamily: FlutterFlowTheme.of(context)
.labelMediumFamily,
color:
FlutterFlowTheme.of(context).primaryText,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(FlutterFlowTheme.of(context)
.labelMediumFamily),
),
alignLabelWithHint: false,
hintStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.labelMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(FlutterFlowTheme.of(context)
.labelMediumFamily),
),
enabledBorder: UnderlineInputBorder( enabledBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: color: FlutterFlowTheme.of(context).customColor1,
FlutterFlowTheme.of(context).customColor1,
width: 0.5, width: 0.5,
), ),
borderRadius: BorderRadius.circular(2.0), borderRadius: BorderRadius.circular(2.0),
@ -495,31 +401,18 @@ class _HomePageWidgetState extends State<HomePageWidget> {
), ),
borderRadius: BorderRadius.circular(2.0), borderRadius: BorderRadius.circular(2.0),
), ),
prefixIcon: const Icon(
Icons.search_sharp,
), ),
), style: FlutterFlowTheme.of(context).bodyMedium.override(
style: FlutterFlowTheme.of(context) fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
letterSpacing: 0.0, letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
), ),
validator: _model.textControllerValidator validator: _model.textControllerValidator.asValidator(context),
.asValidator(context),
), ),
), );
), }
]
.addToStart(const SizedBox(width: 30.0)) Expanded _buildDrawerBody() {
.addToEnd(const SizedBox(width: 30.0)), return Expanded(
),
),
Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
child: wrapWithModel( child: wrapWithModel(
model: _model.menuComponentModel, model: _model.menuComponentModel,
@ -531,11 +424,6 @@ class _HomePageWidgetState extends State<HomePageWidget> {
), ),
), ),
), ),
),
],
),
),
),
); );
} }
} }