import '/backend/api_requests/api_calls.dart'; import '/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart'; import '/evenement/evenement_info/evenement_info_widget.dart'; import '/evenement/evenement_v2_h_t_m_l_component/evenement_v2_h_t_m_l_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 '/shared/drawer_component/drawer_component_widget.dart'; import 'dart:ui'; import 'package:aligned_tooltip/aligned_tooltip.dart'; import 'package:carousel_slider/carousel_slider.dart'; import 'package:cached_network_image/cached_network_image.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 'package:share_plus/share_plus.dart'; import 'event_current_model.dart'; export 'event_current_model.dart'; class EventCurrentWidget extends StatefulWidget { const EventCurrentWidget({ super.key, this.nid, this.horecaid, }); final String? nid; final String? horecaid; static String routeName = 'EventCurrent'; static String routePath = '/eventCurrent'; @override State createState() => _EventCurrentWidgetState(); } class _EventCurrentWidgetState extends State with RouteAware { late EventCurrentModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => EventCurrentModel()); } @override void dispose() { routeObserver.unsubscribe(this); _model.dispose(); super.dispose(); } @override void didUpdateWidget(EventCurrentWidget 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); return FutureBuilder( future: EvenementCall.call( nid: widget!.nid, ), builder: (context, snapshot) { // Customize what your widget looks like when it's loading. if (!snapshot.hasData) { return Scaffold( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, body: Center( child: SizedBox( width: 80.0, height: 80.0, child: SpinKitFadingCircle( color: Color(0xFFB1061E), size: 80.0, ), ), ), ); } final eventCurrentEvenementResponse = snapshot.data!; _model.debugBackendQueries[ 'EvenementCall_statusCode_Scaffold_vv4pr88m'] = debugSerializeParam( eventCurrentEvenementResponse.statusCode, ParamType.int, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent', name: 'int', nullable: false, ); _model.debugBackendQueries[ 'EvenementCall_responseBody_Scaffold_vv4pr88m'] = debugSerializeParam( eventCurrentEvenementResponse.bodyText, ParamType.String, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent', name: 'String', nullable: false, ); debugLogWidgetClass(_model); 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(MediaQuery.sizeOf(context).height * 0.12), child: AppBar( backgroundColor: FlutterFlowTheme.of(context).info, automaticallyImplyLeading: false, actions: [], flexibleSpace: FlexibleSpaceBar( title: Align( alignment: AlignmentDirectional(0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 12.0, 0.0, 0.0, 0.0), child: FlutterFlowIconButton( borderColor: Color(0x00FF0000), borderRadius: 30.0, borderWidth: 1.0, buttonSize: 50.0, fillColor: Color(0xFFFF0000), icon: Icon( Icons.arrow_back_outlined, color: Colors.white, size: 30.0, ), onPressed: () async { context.pop(); }, ), ), FlutterFlowIconButton( borderRadius: 8.0, buttonSize: 40.0, fillColor: FlutterFlowTheme.of(context).primary, icon: Icon( Icons.dehaze_outlined, color: FlutterFlowTheme.of(context).info, size: 24.0, ), onPressed: () async { scaffoldKey.currentState!.openDrawer(); }, ), ], ), ), background: Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(100.0, 0.0, 15.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.asset( 'assets/images/logo800px.png', width: MediaQuery.sizeOf(context).width * 0.7, fit: BoxFit.fitWidth, ), ), ), ), centerTitle: true, expandedTitleScale: 1.0, ), toolbarHeight: MediaQuery.sizeOf(context).height * 0.2, elevation: 2.0, ), ), body: SafeArea( top: true, child: Column( mainAxisSize: MainAxisSize.max, children: [ Builder( builder: (context) { final fotoos = EvenementCall.eventFotoos( eventCurrentEvenementResponse.jsonBody, )?.toList() ?? []; _model.debugGeneratorVariables[ 'fotoos${fotoos.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( fotoos.take(100), ParamType.String, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent', name: 'String', nullable: false, ); debugLogWidgetClass(_model); return Container( width: double.infinity, height: 200.0, child: CarouselSlider.builder( itemCount: fotoos.length, itemBuilder: (context, fotoosIndex, _) { final fotoosItem = fotoos[fotoosIndex]; return ClipRRect( borderRadius: BorderRadius.circular(8.0), child: CachedNetworkImage( fadeInDuration: Duration(milliseconds: 500), fadeOutDuration: Duration(milliseconds: 500), imageUrl: fotoosItem, width: 200.0, height: 200.0, fit: BoxFit.cover, ), ); }, carouselController: _model.carouselController ??= CarouselSliderController(), options: CarouselOptions( initialPage: max(0, min(1, fotoos.length - 1)), viewportFraction: 0.5, disableCenter: true, enlargeCenterPage: true, enlargeFactor: 0.25, enableInfiniteScroll: true, scrollDirection: Axis.horizontal, autoPlay: false, onPageChanged: (index, _) => _model.carouselCurrentIndex = index, ), ), ); }, ), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( valueOrDefault( EvenementCall.eventTitle( eventCurrentEvenementResponse.jsonBody, ), 'title', ), style: FlutterFlowTheme.of(context).headlineLarge.override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .headlineLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .headlineLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .headlineLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .headlineLarge .fontStyle, shadows: [ Shadow( color: FlutterFlowTheme.of(context).secondaryText, offset: Offset(2.0, 2.0), blurRadius: 2.0, ) ], ), ), AlignedTooltip( content: Padding( padding: EdgeInsets.all(4.0), child: Text( FFLocalizations.of(context).getText( 'z63o5kzf' /* Delen */, ), style: FlutterFlowTheme.of(context).bodyLarge.override( font: GoogleFonts.inter( fontWeight: FlutterFlowTheme.of(context) .bodyLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .bodyLarge .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .bodyLarge .fontWeight, fontStyle: FlutterFlowTheme.of(context) .bodyLarge .fontStyle, ), ), ), offset: 4.0, preferredDirection: AxisDirection.down, borderRadius: BorderRadius.circular(8.0), backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, elevation: 4.0, tailBaseWidth: 24.0, tailLength: 12.0, waitDuration: Duration(milliseconds: 100), showDuration: Duration(milliseconds: 1500), triggerMode: TooltipTriggerMode.tap, child: Builder( builder: (context) => FlutterFlowIconButton( borderRadius: 8.0, buttonSize: 40.0, fillColor: Color(0xFFF265A0), icon: Icon( Icons.share, color: FlutterFlowTheme.of(context).info, size: 24.0, ), onPressed: () async { await Share.share( 'https://uitgk.com/${widget!.nid}', sharePositionOrigin: getWidgetBoundingBox(context), ); }, ), ), ), ], ), Text( valueOrDefault( widget!.nid, 'nid', ), 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, ), ), Text( valueOrDefault( EvenementCall.eventDate( eventCurrentEvenementResponse.jsonBody, ), 'date', ), style: FlutterFlowTheme.of(context).headlineSmall.override( font: GoogleFonts.interTight( fontWeight: FlutterFlowTheme.of(context) .headlineSmall .fontWeight, fontStyle: FlutterFlowTheme.of(context) .headlineSmall .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .headlineSmall .fontWeight, fontStyle: FlutterFlowTheme.of(context) .headlineSmall .fontStyle, ), ), Expanded( child: Row( mainAxisSize: MainAxisSize.max, children: [ Material( color: Colors.transparent, elevation: 7.0, child: Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( blurRadius: 4.0, color: Color(0x33000000), offset: Offset( 0.0, 2.0, ), ) ], gradient: LinearGradient( colors: [Color(0xFFE51414), Color(0xFFD28039)], stops: [0.0, 1.0], begin: AlignmentDirectional(0.0, -1.0), end: AlignmentDirectional(0, 1.0), ), border: Border.all( width: 2.0, ), ), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 1.0, 3.0, 1.0, 2.0), child: Builder( builder: (context) { final categorie = EvenementCall.eventCategorie( eventCurrentEvenementResponse .jsonBody, )?.toList() ?? []; _model.debugGeneratorVariables[ 'categorie${categorie.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( categorie.take(100), ParamType.String, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent', name: 'String', nullable: false, ); debugLogWidgetClass(_model); return Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.end, children: List.generate( categorie.length, (categorieIndex) { final categorieItem = categorie[categorieIndex]; return Align( alignment: AlignmentDirectional(1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional .fromSTEB(4.0, 1.0, 4.0, 1.0), child: Material( color: Colors.transparent, elevation: 3.0, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( 2.0), ), child: Container( decoration: BoxDecoration( color: Color(0xFF25CC3E), boxShadow: [ BoxShadow( blurRadius: 4.0, color: Color(0x33000000), offset: Offset( 0.0, 2.0, ), ) ], borderRadius: BorderRadius.circular( 2.0), border: Border.all( width: 0.5, ), ), child: Padding( padding: EdgeInsetsDirectional .fromSTEB(0.0, 0.0, 4.0, 0.0), child: Text( categorieItem, style: FlutterFlowTheme.of( context) .titleSmall .override( font: GoogleFonts .interTight( fontWeight: FlutterFlowTheme.of( context) .titleSmall .fontWeight, fontStyle: FlutterFlowTheme.of( context) .titleSmall .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of( context) .titleSmall .fontWeight, fontStyle: FlutterFlowTheme.of( context) .titleSmall .fontStyle, shadows: [ Shadow( color: FlutterFlowTheme .of(context) .secondaryText, offset: Offset( 2.0, 2.0), blurRadius: 2.0, ) ], ), ), ), ), ), ), ); }), ); }, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 4.0, 2.0, 4.0, 15.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: CachedNetworkImage( fadeInDuration: Duration(milliseconds: 500), fadeOutDuration: Duration(milliseconds: 500), imageUrl: EvenementCall.eventLogog( eventCurrentEvenementResponse.jsonBody, )!, width: MediaQuery.sizeOf(context).width * 0.15, height: MediaQuery.sizeOf(context).height * 0.15, fit: BoxFit.cover, ), ), ), Expanded( child: wrapWithModel( model: _model.evenementInfoModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: EvenementInfoWidget( nid: EvenementCall.eventNid( eventCurrentEvenementResponse .jsonBody, ), title: EvenementCall.eventTitle( eventCurrentEvenementResponse .jsonBody, ), date: EvenementCall.eventDate( eventCurrentEvenementResponse .jsonBody, ), adres: EvenementCall.eventAdres( eventCurrentEvenementResponse .jsonBody, ), plaats: EvenementCall.eventPlaats( eventCurrentEvenementResponse .jsonBody, ), entreetoelichting: EvenementCall .eventEntreeToelichting( eventCurrentEvenementResponse .jsonBody, ), entreeprijs: EvenementCall.eventEntreeprijs( eventCurrentEvenementResponse .jsonBody, ), website: EvenementCall.eventWebsiteg( eventCurrentEvenementResponse .jsonBody, ), contact: EvenementCall.eventContact( eventCurrentEvenementResponse .jsonBody, ), logo: EvenementCall.eventLogog( eventCurrentEvenementResponse .jsonBody, ), fotoos: EvenementCall.eventFotoos( eventCurrentEvenementResponse .jsonBody, ), categories: EvenementCall.eventCategorie( eventCurrentEvenementResponse .jsonBody, ), ), ); }), ), ), ], ), ), ), SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ Container( width: MediaQuery.sizeOf(context).width * 0.6, decoration: BoxDecoration( color: FlutterFlowTheme.of(context).alternate, boxShadow: [ BoxShadow( blurRadius: 4.0, color: Color(0x33000000), offset: Offset( 4.0, 2.0, ), ) ], borderRadius: BorderRadius.circular(4.0), border: Border.all( color: Colors.black, ), ), child: wrapWithModel( model: _model.evenementV2HTMLComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: EvenementV2HTMLComponentWidget( body: EvenementCall.eventBody( eventCurrentEvenementResponse .jsonBody, ), ), ); }), ), ), ], ), ), ], ), ), Expanded( child: wrapWithModel( model: _model.evenementHorecagelegenheidModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: EvenementHorecagelegenheidWidget( establishmentID: widget!.horecaid!, ), ); }), ), ), ], ), ), ), ); }, ); } }