import '/application_components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart'; import '/application_components/organism_components/local_profile_component/local_profile_component_widget.dart'; import '/application_components/templates_components/menu_component/menu_component_widget.dart'; import '/application_components/templates_components/message_well_component/message_well_component_widget.dart'; import '/flutter_flow/flutter_flow_icon_button.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'home_page_model.dart'; export 'home_page_model.dart'; class HomePageWidget extends StatefulWidget { const HomePageWidget({ super.key, required this.userUUID, required this.devUUID, }); final String? userUUID; final String? devUUID; @override State createState() => _HomePageWidgetState(); } class _HomePageWidgetState extends State { late HomePageModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => HomePageModel()); // On page load action. SchedulerBinding.instance.addPostFrameCallback((_) async { if (FFAppState().cliUUID == '') { showModalBottomSheet( isScrollControlled: true, backgroundColor: Colors.transparent, enableDrag: false, context: context, builder: (context) { return GestureDetector( onTap: () => _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), child: Padding( padding: MediaQuery.viewInsetsOf(context), child: const BottomArrowLinkedLocalsComponentWidget(), ), ); }, ).then((value) => safeSetState(() {})); } else { return; } }); _model.textController ??= TextEditingController(); _model.textFieldFocusNode ??= FocusNode(); } @override void dispose() { _model.dispose(); super.dispose(); } @override Widget build(BuildContext context) { context.watch(); return GestureDetector( onTap: () => _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), child: Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, drawer: SizedBox( width: 750.0, child: Drawer( elevation: 16.0, child: Container( decoration: BoxDecoration( color: FlutterFlowTheme.of(context).primaryBackground, shape: BoxShape.rectangle, ), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( decoration: BoxDecoration( color: FlutterFlowTheme.of(context).primary, borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(5.0), bottomRight: Radius.circular(5.0), topLeft: Radius.circular(0.0), topRight: Radius.circular(0.0), ), shape: BoxShape.rectangle, ), child: Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 30.0, 0.0, 0.0), child: Container( width: 100.0, height: 100.0, decoration: const BoxDecoration(), child: Padding( padding: const EdgeInsets.all(12.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 50.0, height: 50.0, clipBehavior: Clip.antiAlias, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Image.network( valueOrDefault( 'https://freaccess.com.br/freaccess/Images/Clients/${FFAppState().cliUUID}.png', 'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg', ), fit: BoxFit.cover, ), ), Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Container( decoration: const BoxDecoration(), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: const EdgeInsetsDirectional .fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'lyiat6s2' /* NOME DO MORADOR */, ), style: FlutterFlowTheme.of( context) .bodyLarge .override( fontFamily: 'Nunito Sans', color: FlutterFlowTheme.of( context) .info, letterSpacing: 0.0, fontWeight: FontWeight.normal, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito Sans'), ), ), ), ], ), ), ), ], ), ), ), ), ), Container( width: 100.0, height: 100.0, decoration: const BoxDecoration(), child: FlutterFlowIconButton( borderRadius: 100.0, borderWidth: 1.0, buttonSize: 1.0, icon: Icon( Icons.close_sharp, color: FlutterFlowTheme.of(context).info, size: 24.0, ), onPressed: () async { if (scaffoldKey.currentState!.isDrawerOpen || scaffoldKey.currentState!.isEndDrawerOpen) { Navigator.pop(context); } }, ), ), ], ), ), Padding( padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, children: [ Flexible( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController, focusNode: _model.textFieldFocusNode, autofocus: false, obscureText: false, decoration: InputDecoration( labelStyle: FlutterFlowTheme.of(context) .labelMedium .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( borderSide: BorderSide( color: FlutterFlowTheme.of(context) .customColor1, width: 2.0, ), borderRadius: BorderRadius.circular(6.0), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).primary, width: 2.0, ), borderRadius: BorderRadius.circular(6.0), ), errorBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 2.0, ), borderRadius: BorderRadius.circular(6.0), ), focusedErrorBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 2.0, ), borderRadius: BorderRadius.circular(6.0), ), prefixIcon: const Icon( Icons.search_sharp, ), ), style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: FlutterFlowTheme.of(context) .bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() .containsKey( FlutterFlowTheme.of(context) .bodyMediumFamily), ), validator: _model.textControllerValidator .asValidator(context), ), ), ), ], ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB(10.0, 20.0, 10.0, 0.0), child: ListView( padding: EdgeInsets.zero, scrollDirection: Axis.vertical, children: [ Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kfast, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'dlaeicxd' /* Auto-Visita */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.khome, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( '53jd930v' /* Condominio */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kpets, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'ptsx0rln' /* Cadastrar Pet */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kvector1, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'rgxgw626' /* Cadastrar Visitante */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kvector2, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'j2tn9lpw' /* QR Code de Acesso */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kvector3, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( '9weuwgs1' /* Histórico de Acesso */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), Divider( thickness: 1.0, color: FlutterFlowTheme.of(context).customColor1, ), Padding( padding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 1.0), child: Container( width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 40.0, height: 40.0, decoration: const BoxDecoration( shape: BoxShape.circle, ), child: Icon( FFIcons.kvector1, color: FlutterFlowTheme.of(context) .primary, size: 24.0, ), ), Expanded( child: Padding( padding: const EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'vuk5bjau' /* Agendar Visita */, ), style: FlutterFlowTheme.of( context) .titleLarge .override( fontFamily: 'Nunito', color: FlutterFlowTheme.of( context) .primaryText, fontSize: 15.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey( 'Nunito'), ), ), ), ), Icon( Icons.chevron_right_rounded, color: FlutterFlowTheme.of(context) .customColor1, size: 24.0, ), ], ), ), ), ), ], ), ], ), ), ), Align( alignment: const AlignmentDirectional(0.0, 1.0), child: Padding( padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { FFAppState().isLogged = false; setState(() {}); context.pushNamed('WelcomePage'); }, text: FFLocalizations.of(context).getText( 'xx0db4wi' /* Sair */, ), options: FFButtonOptions( height: 40.0, padding: const EdgeInsetsDirectional.fromSTEB( 24.0, 0.0, 24.0, 0.0), iconPadding: const EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 0.0), color: const Color(0x00D70000), textStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, useGoogleFonts: GoogleFonts.asMap() .containsKey('Plus Jakarta Sans'), ), elevation: 0.0, borderSide: const BorderSide( width: 0.0, ), borderRadius: BorderRadius.circular(50.0), ), ), ), ), ].addToEnd(const SizedBox(height: 64.0)), ), ), ), ), body: Container( decoration: BoxDecoration( color: FlutterFlowTheme.of(context).primaryBackground, ), child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ Wrap( spacing: 0.0, runSpacing: 0.0, alignment: WrapAlignment.start, crossAxisAlignment: WrapCrossAlignment.start, direction: Axis.horizontal, runAlignment: WrapAlignment.start, verticalDirection: VerticalDirection.down, clipBehavior: Clip.none, children: [ Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Container( width: 100.0, height: 120.0, decoration: const BoxDecoration( color: Color(0xFF1AAB5F), ), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Container( 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: 34.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.network( 'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/8r2vsbd9i03k/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( FFLocalizations.of(context) .getText( 'rg9pzkpz' /* 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), ), ), ), ), ], ), ), ), ), Container( width: 100.0, height: 100.0, decoration: const BoxDecoration(), ), ], ), ), ), ], ), wrapWithModel( model: _model.localComponentModel, updateCallback: () => setState(() {}), child: const LocalProfileComponentWidget(), ), Wrap( spacing: 0.0, runSpacing: 0.0, alignment: WrapAlignment.start, crossAxisAlignment: WrapCrossAlignment.start, direction: Axis.horizontal, runAlignment: WrapAlignment.start, verticalDirection: VerticalDirection.down, clipBehavior: Clip.none, children: [ wrapWithModel( model: _model.menuComponentModel, updateCallback: () => setState(() {}), child: const MenuComponentWidget(), ), Align( alignment: const AlignmentDirectional(0.0, 0.0), child: wrapWithModel( model: _model.messageWellComponentModel, updateCallback: () => setState(() {}), child: const MessageWellComponentWidget(), ), ), ], ), ], ), ], ), ), ), ), ); } }