import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/shared/tag_categorie_component/tag_categorie_component_widget.dart'; import 'dart:ui'; import '/custom_code/widgets/index.dart' as custom_widgets; import 'package:auto_size_text/auto_size_text.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 'kaart_tabel_uitgaan_comp_model.dart'; export 'kaart_tabel_uitgaan_comp_model.dart'; class KaartTabelUitgaanCompWidget extends StatefulWidget { const KaartTabelUitgaanCompWidget({ super.key, this.logo, this.categorie, this.titel, this.datum, this.horecagelegenheid, this.adres, this.plaats, this.inhoud, }); final String? logo; final List? categorie; final String? titel; final String? datum; final String? horecagelegenheid; final String? adres; final String? plaats; final String? inhoud; @override State createState() => _KaartTabelUitgaanCompWidgetState(); } class _KaartTabelUitgaanCompWidgetState extends State with RouteAware { late KaartTabelUitgaanCompModel _model; @override void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } @override void initState() { super.initState(); _model = createModel(context, () => KaartTabelUitgaanCompModel()); } @override void dispose() { routeObserver.unsubscribe(this); _model.maybeDispose(); super.dispose(); } @override void didUpdateWidget(KaartTabelUitgaanCompWidget 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); _model.tagCategorieComponentModels.clear(); return Row( mainAxisSize: MainAxisSize.max, children: [ Align( alignment: AlignmentDirectional(1.0, 0.0), child: Container( width: MediaQuery.sizeOf(context).width * 0.3, decoration: BoxDecoration(), child: Align( alignment: AlignmentDirectional(1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), child: Stack( alignment: AlignmentDirectional(1.0, 1.0), children: [ Align( alignment: AlignmentDirectional(1.0, 0.0), child: Builder( builder: (context) { if (widget!.logo != '') { return ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.network( widget!.logo!, height: 220.0, fit: BoxFit.fitHeight, ), ); } else { return Icon( Icons.image_not_supported, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ); } }, ), ), Align( alignment: AlignmentDirectional(1.0, 1.0), child: Builder( builder: (context) { final categories = widget!.categorie?.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=kaartTabelUitgaanComp', name: 'String', nullable: false, ); debugLogWidgetClass(_model); return Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end, children: List.generate(categories.length, (categoriesIndex) { final categoriesItem = categories[categoriesIndex]; return Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, parentModelCallback: (m) { _model.tagCategorieComponentModels[ 'Keybgq_${categoriesIndex}_of_${categories.length}'] = m; }, child: TagCategorieComponentWidget( key: Key( 'Keybgq_${categoriesIndex}_of_${categories.length}'), categorieTag: categoriesItem, ), ); }); }), ); }, ), ), ], ), ), ), ), ), Container( decoration: BoxDecoration(), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(6.0, 4.0, 0.0, 6.0), child: Text( valueOrDefault( widget!.titel, 'Evenement', ), style: FlutterFlowTheme.of(context).titleLarge.override( font: GoogleFonts.roboto( 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, shadows: [ Shadow( color: FlutterFlowTheme.of(context).secondaryText, offset: Offset(2.0, 2.0), blurRadius: 2.0, ) ], ), ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0), child: Icon( Icons.calendar_month, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ), ), Text( widget!.datum!, style: FlutterFlowTheme.of(context).titleSmall.override( font: GoogleFonts.roboto( 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, ), ), ], ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0), child: Icon( Icons.add_business_rounded, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ), ), Text( widget!.horecagelegenheid!, 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, ), ), ], ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0), child: Icon( Icons.location_on_sharp, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ), ), Text( widget!.adres!, 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, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 0.0, 0.0), child: AutoSizeText( widget!.plaats!, 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, ), overflow: TextOverflow.ellipsis, ), ), ], ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0), child: Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Align( alignment: AlignmentDirectional(0.0, -1.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0), child: Icon( Icons.message, color: FlutterFlowTheme.of(context).primaryText, size: 24.0, ), ), ), Container( width: MediaQuery.sizeOf(context).width * 0.4, height: 80.0, child: custom_widgets.FromHTML( HTMLParameter: widget!.inhoud!, width: MediaQuery.sizeOf(context).width * 0.4, height: 80.0, ), ), ], ), ), ], ), ), ], ); } }