import '/backend/api_requests/api_calls.dart'; import '/components/kaart_tabel_uitgaan_comp_widget.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/shared/geen_evenementen_component/geen_evenementen_component_widget.dart'; import '/index.dart'; import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; import 'package:provider/provider.dart'; import 'uitgaan_tabel_component_model.dart'; export 'uitgaan_tabel_component_model.dart'; class UitgaanTabelComponentWidget extends StatefulWidget { const UitgaanTabelComponentWidget({ super.key, this.townid, this.displayid, }); final String? townid; final String? displayid; @override State createState() => _UitgaanTabelComponentWidgetState(); } class _UitgaanTabelComponentWidgetState extends State with RouteAware { late UitgaanTabelComponentModel _model; @override void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } @override void initState() { super.initState(); _model = createModel(context, () => UitgaanTabelComponentModel()); } @override void dispose() { routeObserver.unsubscribe(this); _model.maybeDispose(); super.dispose(); } @override void didUpdateWidget(UitgaanTabelComponentWidget 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.kaartTabelUitgaanCompModels.clear(); return Padding( padding: EdgeInsetsDirectional.fromSTEB( valueOrDefault( () { if (MediaQuery.sizeOf(context).width < kBreakpointSmall) { return 5.0; } else if (MediaQuery.sizeOf(context).width < kBreakpointMedium) { return 10.0; } else if (MediaQuery.sizeOf(context).width < kBreakpointLarge) { return 15.0; } else { return 10.0; } }(), 0.0, ), 0.0, 0.0, 0.0), child: RefreshIndicator( onRefresh: () async { safeSetState(() => _model.listViewPagingController?.refresh()); await _model.waitForOnePageForListView(); }, child: PagedListView( pagingController: _model.setListViewController( (nextPageMarker) => UitgaanstabelCall.call( townid: widget!.townid, displayId: widget!.displayid, page: nextPageMarker.nextPageNumber, ), ), padding: EdgeInsets.zero, shrinkWrap: true, reverse: false, scrollDirection: Axis.vertical, builderDelegate: PagedChildBuilderDelegate( // Customize what your widget looks like when it's loading the first page. firstPageProgressIndicatorBuilder: (_) => Center( child: SizedBox( width: 80.0, height: 80.0, child: SpinKitFadingCircle( color: Color(0xFFB1061E), size: 80.0, ), ), ), // Customize what your widget looks like when it's loading another page. newPageProgressIndicatorBuilder: (_) => Center( child: SizedBox( width: 80.0, height: 80.0, child: SpinKitFadingCircle( color: Color(0xFFB1061E), size: 80.0, ), ), ), noItemsFoundIndicatorBuilder: (_) => Center( child: GeenEvenementenComponentWidget(), ), itemBuilder: (context, _, evenementenIndex) { final evenementenItem = _model.listViewPagingController!.itemList![evenementenIndex]; return Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0), child: Container( decoration: BoxDecoration( color: Colors.white, boxShadow: [ BoxShadow( blurRadius: 4.0, color: Color(0x33000000), offset: Offset( 12.0, 12.0, ), ) ], borderRadius: BorderRadius.circular(20.0), shape: BoxShape.rectangle, ), child: Align( alignment: AlignmentDirectional(1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 24.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed( EventCurrentWidget.routeName, queryParameters: { 'nid': serializeParam( getJsonField( evenementenItem, r'''$.nid''', ).toString(), ParamType.String, ), 'horecaid': serializeParam( getJsonField( evenementenItem, r'''$.horecagelegenheidid''', ).toString(), ParamType.String, ), }.withoutNulls, ); }, child: Stack( children: [ Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, parentModelCallback: (m) { _model.kaartTabelUitgaanCompModels[ 'Keypxi_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'] = m; }, child: KaartTabelUitgaanCompWidget( key: Key( 'Keypxi_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'), logo: getJsonField( evenementenItem, r'''$.logo''', ).toString(), categorie: (getJsonField( evenementenItem, r'''$.categorie''', true, ) as List?) ?.map((e) => e.toString()) .toList() .cast(), titel: getJsonField( evenementenItem, r'''$.titel''', ).toString(), datum: getJsonField( evenementenItem, r'''$.datum''', ).toString(), horecagelegenheid: getJsonField( evenementenItem, r'''$.horecagelegenheid''', ).toString(), adres: getJsonField( evenementenItem, r'''$.adres''', ).toString(), plaats: getJsonField( evenementenItem, r'''$.plaats''', ).toString(), inhoud: valueOrDefault( getJsonField( evenementenItem, r'''$.inhoud''', )?.toString(), '\$.inhoud', ), ), ); }), ], ), ), ), ), ), ); }, ), ), ), ); } }