import '/backend/api_requests/api_calls.dart'; import '/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import 'dart:ui'; import '/custom_code/widgets/index.dart' as custom_widgets; 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 'evenement_component_model.dart'; export 'evenement_component_model.dart'; class EvenementComponentWidget extends StatefulWidget { const EvenementComponentWidget({ super.key, this.nid, }); final String? nid; @override State createState() => _EvenementComponentWidgetState(); } class _EvenementComponentWidgetState extends State with RouteAware { late EvenementComponentModel _model; @override void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } @override void initState() { super.initState(); _model = createModel(context, () => EvenementComponentModel()); } @override void dispose() { routeObserver.unsubscribe(this); _model.maybeDispose(); super.dispose(); } @override void didUpdateWidget(EvenementComponentWidget 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 Center( child: SizedBox( width: 80.0, height: 80.0, child: SpinKitFadingCircle( color: Color(0xFFB1061E), size: 80.0, ), ), ); } final columnEvenementResponse = snapshot.data!; _model.debugBackendQueries['EvenementCall_statusCode_Column_7p7qgpjv'] = debugSerializeParam( columnEvenementResponse.statusCode, ParamType.int, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EvenementComponent', name: 'int', nullable: false, ); _model.debugBackendQueries[ 'EvenementCall_responseBody_Column_7p7qgpjv'] = debugSerializeParam( columnEvenementResponse.bodyText, ParamType.String, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EvenementComponent', name: 'String', nullable: false, ); debugLogWidgetClass(_model); return Column( mainAxisSize: MainAxisSize.min, children: [ Expanded( child: Builder( builder: (context) { final fotoos = EvenementCall.eventFotoos( columnEvenementResponse.jsonBody, )?.toList() ?? []; if (fotoos.isEmpty) { return Image.asset( 'assets/images/logo800px.png', ); } _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=EvenementComponent', 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 Builder( builder: (context) { if (fotoosItem != '') { 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, ), ); } else { return Icon( Icons.image_not_supported, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ); } }, ); }, 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, ), ), ); }, ), ), Text( valueOrDefault( getJsonField( columnEvenementResponse.jsonBody, r'''$[0].title''', )?.toString(), '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, ), ), Text( valueOrDefault( EvenementCall.eventDate( columnEvenementResponse.jsonBody, ), 'eventDate', ), 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, ), ), Builder( builder: (context) { final categories = EvenementCall.eventCategorie( columnEvenementResponse.jsonBody, )?.toList() ?? []; _model.debugGeneratorVariables[ 'categories${categories.length > 100 ? ' (first 100)' : ''}'] = debugSerializeParam( categories.take(100), ParamType.String, isList: true, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EvenementComponent', name: 'String', nullable: false, ); debugLogWidgetClass(_model); return Row( mainAxisSize: MainAxisSize.max, children: List.generate(categories.length, (categoriesIndex) { final categoriesItem = categories[categoriesIndex]; return Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 8.0, 0.0), child: Text( categoriesItem, 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: [ Text( valueOrDefault( EvenementCall.eventAdres( columnEvenementResponse.jsonBody, ), 'adres', ), 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.eventPlaats( columnEvenementResponse.jsonBody, ), 'plaats', ), 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, ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Text( FFLocalizations.of(context).getText( 'nghx1743' /* entreetoelichting */, ), 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( FFLocalizations.of(context).getText( 'y02m0qh0' /* 15 euro */, ), 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, ), ), InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { await launchURL(EvenementCall.eventWebsiteg( columnEvenementResponse.jsonBody, )!); }, child: Text( FFLocalizations.of(context).getText( 'izrkv2a9' /* Website */, ), 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( FFLocalizations.of(context).getText( 'lrjms1by' /* Hello World Contactveld */, ), 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, ), ), ], ), 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: [ Builder( builder: (context) { if (getJsonField( columnEvenementResponse.jsonBody, r'''$[0].logo''', ) != null) { return ClipRRect( borderRadius: BorderRadius.circular(8.0), child: CachedNetworkImage( fadeInDuration: Duration(milliseconds: 500), fadeOutDuration: Duration(milliseconds: 500), imageUrl: EvenementCall.eventLogog( columnEvenementResponse.jsonBody, )!, width: 40.0, height: 40.0, fit: BoxFit.cover, ), ); } else { return Icon( Icons.image_not_supported, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ); } }, ), Container( width: MediaQuery.sizeOf(context).width * 0.4, height: MediaQuery.sizeOf(context).height * 0.4, child: custom_widgets.FromHTML( width: MediaQuery.sizeOf(context).width * 0.4, height: MediaQuery.sizeOf(context).height * 0.4, HTMLParameter: EvenementCall.eventBody( columnEvenementResponse.jsonBody, )!, ), ), ], ), ], ), Expanded( child: wrapWithModel( model: _model.evenementHorecagelegenheidModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: EvenementHorecagelegenheidWidget( establishmentID: widget!.nid!, ), ); }), ), ), ], ); }, ); } }