|
|
@@ -0,0 +1,285 @@
|
|
|
+import '/backend/api_requests/api_calls.dart';
|
|
|
+import '/components/kaart_tabel_uitgaan_s_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 'z_zuitgaantabel_componentsmall_model.dart';
|
|
|
+export 'z_zuitgaantabel_componentsmall_model.dart';
|
|
|
+
|
|
|
+class ZZuitgaantabelComponentsmallWidget extends StatefulWidget {
|
|
|
+ const ZZuitgaantabelComponentsmallWidget({
|
|
|
+ super.key,
|
|
|
+ this.townid,
|
|
|
+ this.displayid,
|
|
|
+ });
|
|
|
+
|
|
|
+ final String? townid;
|
|
|
+ final String? displayid;
|
|
|
+
|
|
|
+ @override
|
|
|
+ State<ZZuitgaantabelComponentsmallWidget> createState() =>
|
|
|
+ _ZZuitgaantabelComponentsmallWidgetState();
|
|
|
+}
|
|
|
+
|
|
|
+class _ZZuitgaantabelComponentsmallWidgetState
|
|
|
+ extends State<ZZuitgaantabelComponentsmallWidget> with RouteAware {
|
|
|
+ late ZZuitgaantabelComponentsmallModel _model;
|
|
|
+
|
|
|
+ @override
|
|
|
+ void setState(VoidCallback callback) {
|
|
|
+ super.setState(callback);
|
|
|
+ _model.onUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ void initState() {
|
|
|
+ super.initState();
|
|
|
+ _model = createModel(context, () => ZZuitgaantabelComponentsmallModel());
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ void dispose() {
|
|
|
+ routeObserver.unsubscribe(this);
|
|
|
+
|
|
|
+ _model.maybeDispose();
|
|
|
+
|
|
|
+ super.dispose();
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ void didUpdateWidget(ZZuitgaantabelComponentsmallWidget 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.kaartTabelUitgaanSCompModels.clear();
|
|
|
+
|
|
|
+ return Padding(
|
|
|
+ padding: EdgeInsetsDirectional.fromSTEB(
|
|
|
+ valueOrDefault<double>(
|
|
|
+ () {
|
|
|
+ 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<ApiPagingParams, dynamic>(
|
|
|
+ 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<dynamic>(
|
|
|
+ // 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, 20.0, 12.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: Container(
|
|
|
+ decoration: BoxDecoration(
|
|
|
+ boxShadow: [
|
|
|
+ BoxShadow(
|
|
|
+ blurRadius: 4.0,
|
|
|
+ color: Color(0x33000000),
|
|
|
+ offset: Offset(
|
|
|
+ 12.0,
|
|
|
+ 12.0,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ gradient: LinearGradient(
|
|
|
+ colors: [Colors.white, Color(0xFFF4DDDF)],
|
|
|
+ stops: [0.0, 1.0],
|
|
|
+ begin: AlignmentDirectional(0.0, -1.0),
|
|
|
+ end: AlignmentDirectional(0, 1.0),
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(20.0),
|
|
|
+ shape: BoxShape.rectangle,
|
|
|
+ border: Border.all(
|
|
|
+ color: Color(0xFFB1061E),
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ child: Builder(builder: (_) {
|
|
|
+ return DebugFlutterFlowModelContext(
|
|
|
+ rootModel: _model.rootModel,
|
|
|
+ parentModelCallback: (m) {
|
|
|
+ _model.kaartTabelUitgaanSCompModels[
|
|
|
+ 'Keycev_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'] = m;
|
|
|
+ },
|
|
|
+ child: KaartTabelUitgaanSCompWidget(
|
|
|
+ key: Key(
|
|
|
+ 'Keycev_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'),
|
|
|
+ titel: getJsonField(
|
|
|
+ evenementenItem,
|
|
|
+ r'''$.titel''',
|
|
|
+ ).toString(),
|
|
|
+ logo: getJsonField(
|
|
|
+ evenementenItem,
|
|
|
+ r'''$.logo''',
|
|
|
+ ).toString(),
|
|
|
+ categorie: (getJsonField(
|
|
|
+ evenementenItem,
|
|
|
+ r'''$.categorie''',
|
|
|
+ true,
|
|
|
+ ) as List?)
|
|
|
+ ?.map<String>((e) => e.toString())
|
|
|
+ .toList()
|
|
|
+ .cast<String>(),
|
|
|
+ date: 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<String>(
|
|
|
+ getJsonField(
|
|
|
+ evenementenItem,
|
|
|
+ r'''$.inhoud''',
|
|
|
+ )?.toString(),
|
|
|
+ '\$.inhoud',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ }),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|