import '/components/header_buttons_component_widget.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart'; import '/shared/drawer_component/drawer_component_widget.dart'; import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart'; import 'dart:async'; import 'dart:ui'; import '/custom_code/actions/index.dart' as actions; import '/index.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'favorieten_model.dart'; export 'favorieten_model.dart'; class FavorietenWidget extends StatefulWidget { const FavorietenWidget({super.key}); static String routeName = 'favorieten'; static String routePath = '/favorieten'; @override State createState() => _FavorietenWidgetState(); } class _FavorietenWidgetState extends State with TickerProviderStateMixin, RouteAware { late FavorietenModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => FavorietenModel()); // On page load action. SchedulerBinding.instance.addPostFrameCallback((_) async { _model.responseActionDrupalRequestPageLoad = await actions.drupalRequest( 'GET', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten_agenda.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '', ); _model.favorietenAgenda = _model.responseActionDrupalRequestPageLoad!.toList().cast(); safeSetState(() {}); }); _model.tabBarController = TabController( vsync: this, length: 4, initialIndex: 0, ) ..addListener(() => safeSetState(() {})) ..addListener(() { debugLogWidgetClass(_model); }); } @override void dispose() { routeObserver.unsubscribe(this); _model.dispose(); super.dispose(); } @override void didUpdateWidget(FavorietenWidget 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(); _model.uitgaantabelKaartModels.clear(); _model.horecagelegenheidoverzichtKaartModels.clear(); return GestureDetector( onTap: () { FocusScope.of(context).unfocus(); FocusManager.instance.primaryFocus?.unfocus(); }, child: Scaffold( key: scaffoldKey, 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(80.0), child: AppBar( backgroundColor: FlutterFlowTheme.of(context).info, automaticallyImplyLeading: false, actions: [], flexibleSpace: FlexibleSpaceBar( title: wrapWithModel( model: _model.headerButtonsComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HeaderButtonsComponentWidget( showBackButton: false, ), ); }), ), centerTitle: true, expandedTitleScale: 1.0, ), elevation: 0.0, ), ), body: SafeArea( top: true, child: Column( mainAxisSize: MainAxisSize.max, children: [ 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.interTight( 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.interTight( 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).primary, tabs: [ Tab( text: FFLocalizations.of(context).getText( 'txq7zl0f' /* Persoonlijke agenda */, ), ), Tab( text: FFLocalizations.of(context).getText( '9wq117bv' /* Favoriete gemeenten */, ), ), Tab( text: FFLocalizations.of(context).getText( 'ygk8aifq' /* Favoriete Gelegenheden */, ), ), Tab( text: FFLocalizations.of(context).getText( 'jwojezxv' /* Gebruiker */, ), ), ], controller: _model.tabBarController, onTap: (i) async { [ () async { _model.responsActionDrupalRequest = await actions.drupalRequest( 'GET', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten_agenda.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '', ); _model.favorietenAgenda = _model .responsActionDrupalRequest! .toList() .cast(); safeSetState(() {}); safeSetState(() {}); }, () async { _model.resultFavorietegemeenten = await actions.drupalRequest( 'GET', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten_gemeenten.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '', ); _model.favorietenGemeenten = _model .resultFavorietegemeenten! .toList() .cast(); safeSetState(() {}); safeSetState(() {}); }, () async { _model.responseFavorieteHoreca = await actions.drupalRequest( 'GET', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten_horeca.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '', ); _model.favorieteHorecagelegenheden = _model .responseFavorieteHoreca! .toList() .cast(); safeSetState(() {}); safeSetState(() {}); }, () async {} ][i](); }, ), ), Expanded( child: TabBarView( controller: _model.tabBarController, children: [ Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Builder( builder: (context) { final favorietenAgendaItems = _model.favorietenAgenda.toList(); _model.debugGeneratorVariables[ 'favorietenAgendaItems${favorietenAgendaItems.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( favorietenAgendaItems.take(100), ParamType.JSON, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten', name: 'dynamic', nullable: false, ); debugLogWidgetClass(_model); return MasonryGridView.builder( gridDelegate: SliverSimpleGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, ), crossAxisSpacing: 10.0, mainAxisSpacing: 10.0, itemCount: favorietenAgendaItems.length, itemBuilder: (context, favorietenAgendaItemsIndex) { final favorietenAgendaItemsItem = favorietenAgendaItems[ favorietenAgendaItemsIndex]; return Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, parentModelCallback: (m) { _model.uitgaantabelKaartModels[ 'Keyiv6_${favorietenAgendaItemsIndex}_of_${favorietenAgendaItems.length}'] = m; }, child: UitgaantabelKaartWidget( key: Key( 'Keyiv6_${favorietenAgendaItemsIndex}_of_${favorietenAgendaItems.length}'), logo: getJsonField( favorietenAgendaItemsItem, r'''$.logo''', ), categorie: getJsonField( favorietenAgendaItemsItem, r'''$.categorie''', ), titel: getJsonField( favorietenAgendaItemsItem, r'''$.titel''', ), horecagelegenheid: getJsonField( favorietenAgendaItemsItem, r'''$.horecagelegenheid''', ), adres: getJsonField( favorietenAgendaItemsItem, r'''$.adres''', ), plaats: getJsonField( favorietenAgendaItemsItem, r'''$.plaats''', ), datum: getJsonField( favorietenAgendaItemsItem, r'''$.datum''', ), inhoud: null, nid: getJsonField( favorietenAgendaItemsItem, r'''$.nid''', ), horecagelegenheidNid: getJsonField( favorietenAgendaItemsItem, r'''$.horecagelegenheidNid''', ), ), ); }); }, ); }, ), ), Text( FFLocalizations.of(context).getText( 'wmho8j7h' /* Hello World */, ), style: FlutterFlowTheme.of(context) .bodyMedium .override( font: GoogleFonts.inter( 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, ), ), ], ), Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 16.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'o7pt2vls' /* De gemeentes die je hebt gemar... */, ), style: FlutterFlowTheme.of(context) .bodyMedium .override( font: GoogleFonts.inter( 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, ), ), ), Expanded( child: Flex( direction: Axis.vertical, mainAxisSize: MainAxisSize.max, children: [ Builder( builder: (context) { final favorieteGemeenteItem = _model.favorietenGemeenten.toList(); _model.debugGeneratorVariables[ 'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( favorieteGemeenteItem.take(100), ParamType.JSON, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten', name: 'dynamic', nullable: false, ); debugLogWidgetClass(_model); return ListView.builder( padding: EdgeInsets.zero, shrinkWrap: true, scrollDirection: Axis.vertical, itemCount: favorieteGemeenteItem.length, itemBuilder: (context, favorieteGemeenteItemIndex) { final favorieteGemeenteItemItem = favorieteGemeenteItem[ favorieteGemeenteItemIndex]; return InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { FFAppState().gemeenteSelectId = getJsonField( favorieteGemeenteItemItem, r'''$.nid''', ).toString(); FFAppState() .gemeenteSelectNaam = getJsonField( favorieteGemeenteItemItem, r'''$.titel''', ).toString(); FFAppState().provincieSelectId = getJsonField( favorieteGemeenteItemItem, r'''$.parent_nid''', ).toString(); FFAppState() .provincieSelectName = getJsonField( favorieteGemeenteItemItem, r'''$.parent_nid''', ).toString(); safeSetState(() {}); context.pushNamed( HomeWidget.routeName); }, child: Material( color: Colors.transparent, child: ListTile( title: Text( getJsonField( favorieteGemeenteItemItem, r'''$.titel''', ).toString(), style: FlutterFlowTheme.of( context) .titleLarge .override( font: GoogleFonts .interTight( fontWeight: FlutterFlowTheme.of( context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of( context) .titleLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of( context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of( context) .titleLarge .fontStyle, ), ), subtitle: Text( FFLocalizations.of(context) .getText( 'jm4s7cdn' /* Stel in als standaard */, ), style: FlutterFlowTheme.of( context) .labelMedium .override( font: GoogleFonts.inter( 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, ), ), trailing: Icon( Icons .arrow_forward_ios_rounded, color: FlutterFlowTheme.of( context) .secondaryText, size: 24.0, ), tileColor: FlutterFlowTheme.of( context) .secondaryBackground, dense: false, contentPadding: EdgeInsetsDirectional .fromSTEB(12.0, 0.0, 12.0, 0.0), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( 8.0), ), ), ), ); }, ); }, ), ], ), ), ], ), Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Builder( builder: (context) { final favorieteHorecagelegenheid = _model .favorieteHorecagelegenheden .toList(); _model.debugGeneratorVariables[ 'favorieteHorecagelegenheid${favorieteHorecagelegenheid.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( favorieteHorecagelegenheid.take(100), ParamType.JSON, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten', name: 'dynamic', nullable: false, ); debugLogWidgetClass(_model); return MasonryGridView.builder( gridDelegate: SliverSimpleGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, ), crossAxisSpacing: 10.0, mainAxisSpacing: 10.0, itemCount: favorieteHorecagelegenheid.length, itemBuilder: (context, favorieteHorecagelegenheidIndex) { final favorieteHorecagelegenheidItem = favorieteHorecagelegenheid[ favorieteHorecagelegenheidIndex]; return InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed( HorecagelegenheidCurrentWidget .routeName, queryParameters: { 'nid': serializeParam( getJsonField( favorieteHorecagelegenheidItem, r'''$.nid''', ).toString(), ParamType.String, ), }.withoutNulls, ); }, child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, parentModelCallback: (m) { _model.horecagelegenheidoverzichtKaartModels[ 'Keycet_${favorieteHorecagelegenheidIndex}_of_${favorieteHorecagelegenheid.length}'] = m; }, child: HorecagelegenheidoverzichtKaartWidget( key: Key( 'Keycet_${favorieteHorecagelegenheidIndex}_of_${favorieteHorecagelegenheid.length}'), titel: getJsonField( favorieteHorecagelegenheidItem, r'''$.titel''', ).toString(), logo: getJsonField( favorieteHorecagelegenheidItem, r'''$.logo''', ).toString(), nid: getJsonField( favorieteHorecagelegenheidItem, r'''$.nid''', ).toString(), adres: getJsonField( favorieteHorecagelegenheidItem, r'''$.adres''', ).toString(), plaats: getJsonField( favorieteHorecagelegenheidItem, r'''$.plaats''', ).toString(), categorie: (getJsonField( favorieteHorecagelegenheidItem, r'''$.categorie''', true, ) as List?) ?.map( (e) => e.toString()) .toList() .cast(), ), ); }), ); }, ); }, ), ), ], ), Column( mainAxisSize: MainAxisSize.max, children: [ InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { FFAppState().deleteUserToken(); FFAppState().userToken = ''; FFAppState().deleteUserSessionid(); FFAppState().userSessionid = ''; FFAppState().deleteUserSessionname(); FFAppState().userSessionname = ''; FFAppState().deleteUserName(); FFAppState().userName = ''; FFAppState().deleteUserUid(); FFAppState().userUid = 0; FFAppState().deleteUserMail(); FFAppState().userMail = ''; safeSetState(() {}); context.goNamed(LoginWidget.routeName); }, child: Material( color: Colors.transparent, child: ListTile( title: Text( FFLocalizations.of(context).getText( '275gmehq' /* Uitloggen */, ), style: FlutterFlowTheme.of(context) .titleLarge .override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), ), trailing: Icon( Icons.arrow_forward_ios_rounded, color: FlutterFlowTheme.of(context) .secondaryText, size: 24.0, ), tileColor: FlutterFlowTheme.of(context) .secondaryBackground, dense: false, contentPadding: EdgeInsetsDirectional.fromSTEB( 12.0, 0.0, 12.0, 0.0), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), ), ), ), InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context .pushNamed(MijnProfielWidget.routeName); }, child: Material( color: Colors.transparent, child: ListTile( title: Text( FFLocalizations.of(context).getText( 'pdzmzb1p' /* Mijn profiel */, ), style: FlutterFlowTheme.of(context) .titleLarge .override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), ), trailing: Icon( Icons.arrow_forward_ios_rounded, color: FlutterFlowTheme.of(context) .secondaryText, size: 24.0, ), tileColor: FlutterFlowTheme.of(context) .secondaryBackground, dense: false, contentPadding: EdgeInsetsDirectional.fromSTEB( 12.0, 0.0, 12.0, 0.0), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), ), ), ), InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed( WachtwoordVergetenWidget.routeName); }, child: Material( color: Colors.transparent, child: ListTile( title: Text( FFLocalizations.of(context).getText( 'ogz7q3xk' /* Wachtwoord wijzigen */, ), style: FlutterFlowTheme.of(context) .titleLarge .override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), ), trailing: Icon( Icons.arrow_forward_ios_rounded, color: FlutterFlowTheme.of(context) .secondaryText, size: 24.0, ), tileColor: FlutterFlowTheme.of(context) .secondaryBackground, dense: false, contentPadding: EdgeInsetsDirectional.fromSTEB( 12.0, 0.0, 12.0, 0.0), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), ), ), ), InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { unawaited( () async { await launchURL( 'https://uitgaanskrant.com/nl/account-verwijderen'); }(), ); }, child: Material( color: Colors.transparent, child: ListTile( title: Text( FFLocalizations.of(context).getText( 'i31b4itp' /* Account verwijderen */, ), style: FlutterFlowTheme.of(context) .titleLarge .override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .titleLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .titleLarge .fontStyle, ), ), trailing: Icon( Icons.arrow_forward_ios_rounded, color: FlutterFlowTheme.of(context) .secondaryText, size: 24.0, ), tileColor: FlutterFlowTheme.of(context) .secondaryBackground, dense: false, contentPadding: EdgeInsetsDirectional.fromSTEB( 12.0, 0.0, 12.0, 0.0), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), ), ), ), ], ), ], ), ), ], ), ), ], ), ), ), ); } }