import '/components/header_buttons_component_widget.dart'; import '/flutter_flow/flutter_flow_choice_chips.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/flutter_flow/form_field_controller.dart'; import '/shared/drawer_component/drawer_component_widget.dart'; import '/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart'; import '/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart'; import 'dart:ui'; import '/custom_code/actions/index.dart' as actions; import '/flutter_flow/custom_functions.dart' as functions; import 'package:easy_debounce/easy_debounce.dart'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'home_model.dart'; export 'home_model.dart'; class HomeWidget extends StatefulWidget { const HomeWidget({super.key}); static String routeName = 'home'; static String routePath = '/home'; @override State createState() => _HomeWidgetState(); } class _HomeWidgetState extends State with TickerProviderStateMixin, RouteAware { late HomeModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => HomeModel()); _model.textController ??= TextEditingController() ..addListener(() { debugLogWidgetClass(_model); }); _model.textFieldFocusNode ??= FocusNode(); _model.textFieldFocusNode!.addListener( () async { safeSetState(() {}); }, ); _model.tabBarController = TabController( vsync: this, length: 5, initialIndex: 0, ) ..addListener(() => safeSetState(() {})) ..addListener(() { debugLogWidgetClass(_model); }); } @override void dispose() { routeObserver.unsubscribe(this); _model.dispose(); super.dispose(); } @override void didUpdateWidget(HomeWidget oldWidget) { super.didUpdateWidget(oldWidget); _model.widget = widget; } @override void didChangeDependencies() { super.didChangeDependencies(); final route = DebugModalRoute.of(context); if (route != null) { routeObserver.subscribe(this, route); } debugLogGlobalProperty(context); } @override void didPopNext() { if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) { setState(() => _model.isRouteVisible = true); debugLogWidgetClass(_model); } } @override void didPush() { if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) { setState(() => _model.isRouteVisible = true); debugLogWidgetClass(_model); } } @override void didPop() { _model.isRouteVisible = false; } @override void didPushNext() { _model.isRouteVisible = false; } @override Widget build(BuildContext context) { DebugFlutterFlowModelContext.maybeOf(context) ?.parentModelCallback ?.call(_model); context.watch(); return GestureDetector( onTap: () { FocusScope.of(context).unfocus(); FocusManager.instance.primaryFocus?.unfocus(); }, child: Scaffold( key: scaffoldKey, resizeToAvoidBottomInset: false, backgroundColor: FlutterFlowTheme.of(context).primaryBackground, drawer: Drawer( elevation: 16.0, child: wrapWithModel( model: _model.drawerComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: DrawerComponentWidget(), ); }), ), ), appBar: PreferredSize( preferredSize: Size.fromHeight(50.0), child: AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryText, iconTheme: IconThemeData(color: FlutterFlowTheme.of(context).secondary), automaticallyImplyLeading: false, actions: [], flexibleSpace: FlexibleSpaceBar( background: wrapWithModel( model: _model.headerButtonsComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HeaderButtonsComponentWidget( showBackButton: false, ), ); }), ), centerTitle: true, expandedTitleScale: 1.0, ), bottom: PreferredSize( preferredSize: Size.fromHeight(70.0), child: Container(), ), toolbarHeight: MediaQuery.sizeOf(context).height * 0.25, elevation: 2.0, ), ), body: SafeArea( top: true, child: Column( mainAxisSize: MainAxisSize.max, children: [ if (!(_model.textFieldFocusNode?.hasFocus ?? false)) Material( color: Colors.transparent, elevation: 0.0, child: Container( height: 280.0, decoration: BoxDecoration(), child: wrapWithModel( model: _model.homeUitgaanSliderComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaanSliderComponentWidget( displayid: 'services_1', ), ); }), ), ), ), Container( width: 260.0, child: TextFormField( controller: _model.textController, focusNode: _model.textFieldFocusNode, onChanged: (_) => EasyDebounce.debounce( '_model.textController', Duration(milliseconds: 2000), () async { FFAppState().zoekterm = _model.textController.text; safeSetState(() {}); await actions.herlaadLijsten(); }, ), autofocus: false, enabled: true, obscureText: false, decoration: InputDecoration( isDense: true, labelStyle: FlutterFlowTheme.of(context).labelMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), hintText: FFLocalizations.of(context).getText( 'qflzdn1h' /* Zoek op titel */, ), hintStyle: FlutterFlowTheme.of(context).labelMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), filled: true, fillColor: FlutterFlowTheme.of(context).secondaryBackground, ), style: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .bodyMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), cursorColor: FlutterFlowTheme.of(context).primaryText, enableInteractiveSelection: true, validator: _model.textControllerValidator.asValidator(context), ), ), FlutterFlowChoiceChips( options: [ ChipData(FFLocalizations.of(context).getText( '8khvlnye' /* Alles */, )), ChipData(FFLocalizations.of(context).getText( 'iov8u1yi' /* Vandaag */, )), ChipData(FFLocalizations.of(context).getText( 'gco4jgol' /* Dit weekend */, )), ChipData(FFLocalizations.of(context).getText( 'h6ou1q9q' /* Deze week */, )) ], onChanged: (val) async { safeSetState( () => _model.choiceChipsValue = val?.firstOrNull); FFAppState().datumFilter = _model.choiceChipsValue!; safeSetState(() {}); await actions.herlaadLijsten(); }, selectedChipStyle: ChipStyle( backgroundColor: FlutterFlowTheme.of(context).secondary, textStyle: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .bodyMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), iconColor: FlutterFlowTheme.of(context).info, iconSize: 16.0, elevation: 0.0, borderRadius: BorderRadius.circular(8.0), ), unselectedChipStyle: ChipStyle( backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, textStyle: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .bodyMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), color: FlutterFlowTheme.of(context).secondaryText, letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), iconColor: FlutterFlowTheme.of(context).secondaryText, iconSize: 16.0, elevation: 0.0, borderRadius: BorderRadius.circular(8.0), ), chipSpacing: 8.0, rowSpacing: 8.0, multiselect: false, initialized: _model.choiceChipsValue != null, alignment: WrapAlignment.start, controller: _model.choiceChipsValueController ??= FormFieldController>( [ FFLocalizations.of(context).getText( 'g09d1fb5' /* Alles */, ) ], ), wrapped: true, ), Expanded( child: Column( children: [ Align( alignment: Alignment(0.0, 0), child: TabBar( isScrollable: true, tabAlignment: TabAlignment.center, labelColor: FlutterFlowTheme.of(context).primaryText, unselectedLabelColor: FlutterFlowTheme.of(context).secondaryText, labelStyle: FlutterFlowTheme.of(context).titleMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .titleMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleMedium .fontStyle, ), unselectedLabelStyle: FlutterFlowTheme.of(context).titleMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .titleMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleMedium .fontStyle, ), indicatorColor: FlutterFlowTheme.of(context).secondary, tabs: [ Tab( text: FFLocalizations.of(context).getText( 'eor4c9rz' /* Uitgaan */, ), ), Tab( text: FFLocalizations.of(context).getText( 'mx7sn4ne' /* Activiteiten */, ), ), Tab( text: FFLocalizations.of(context).getText( 'e6xyyt74' /* Cultuur & Info */, ), ), Tab( text: FFLocalizations.of(context).getText( 'uxy2nfok' /* Films */, ), ), Tab( text: FFLocalizations.of(context).getText( 'lx77xfrn' /* Jeugd */, ), ), ], controller: _model.tabBarController, onTap: (i) async { [ () async {}, () async { _model.tabActiviteitenGeladen = true; safeSetState(() {}); }, () async { _model.tabCultuurGeladen = true; safeSetState(() {}); }, () async { _model.tabFilmsGeladen = true; safeSetState(() {}); }, () async { _model.tabJeugdGeladen = true; safeSetState(() {}); } ][i](); }, ), ), Expanded( child: TabBarView( controller: _model.tabBarController, children: [ Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: wrapWithModel( model: _model .homeUitgaantabelKaartComponentModel1, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaantabelKaartComponentWidget( key: ValueKey(FFAppState().datumFilter), displayid: 'services_3', datumVan: functions.filterDatumVan( FFAppState().datumFilter), datumTot: functions.filterDatumTot( FFAppState().datumFilter), zoekterm: FFAppState().zoekterm, ), ); }), ), ), ], ), Builder( builder: (context) { if (_model.tabActiviteitenGeladen) { return Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: wrapWithModel( model: _model .homeUitgaantabelKaartComponentModel2, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaantabelKaartComponentWidget( key: ValueKey( FFAppState().datumFilter), displayid: 'services_4', datumVan: functions.filterDatumVan( FFAppState().datumFilter), datumTot: functions.filterDatumTot( FFAppState().datumFilter), zoekterm: FFAppState().zoekterm, ), ); }), ), ), ], ); } else { return Container( width: 100.0, height: 100.0, decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, ), ); } }, ), Builder( builder: (context) { if (_model.tabCultuurGeladen) { return Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: wrapWithModel( model: _model .homeUitgaantabelKaartComponentModel3, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaantabelKaartComponentWidget( key: ValueKey( FFAppState().datumFilter), displayid: 'services_5', datumVan: functions.filterDatumVan( FFAppState().datumFilter), datumTot: functions.filterDatumTot( FFAppState().datumFilter), zoekterm: FFAppState().zoekterm, ), ); }), ), ), ], ); } else { return Container( width: 100.0, height: 100.0, decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, ), ); } }, ), Builder( builder: (context) { if (_model.tabFilmsGeladen) { return Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: wrapWithModel( model: _model .homeUitgaantabelKaartComponentModel4, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaantabelKaartComponentWidget( key: ValueKey( FFAppState().datumFilter), displayid: 'services_6', datumVan: functions.filterDatumVan( FFAppState().datumFilter), datumTot: functions.filterDatumTot( FFAppState().datumFilter), zoekterm: FFAppState().zoekterm, ), ); }), ), ), ], ); } else { return Container( width: 100.0, height: 100.0, decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, ), ); } }, ), Builder( builder: (context) { if (_model.tabJeugdGeladen) { return Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: wrapWithModel( model: _model .homeUitgaantabelKaartComponentModel5, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HomeUitgaantabelKaartComponentWidget( key: ValueKey( FFAppState().datumFilter), displayid: 'services_7', datumVan: functions.filterDatumVan( FFAppState().datumFilter), datumTot: functions.filterDatumTot( FFAppState().datumFilter), zoekterm: FFAppState().zoekterm, ), ); }), ), ), ], ); } else { return Container( width: 100.0, height: 100.0, decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, ), ); } }, ), ], ), ), ], ), ), ], ), ), ), ); } }