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 'dart:ui'; import '/custom_code/actions/index.dart' as actions; import 'package:aligned_tooltip/aligned_tooltip.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 'header_buttons_component_model.dart'; export 'header_buttons_component_model.dart'; /// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's class HeaderButtonsComponentWidget extends StatefulWidget { const HeaderButtonsComponentWidget({ super.key, bool? showBackButton, }) : this.showBackButton = showBackButton ?? true; final bool showBackButton; @override State createState() => _HeaderButtonsComponentWidgetState(); } class _HeaderButtonsComponentWidgetState extends State with RouteAware { late HeaderButtonsComponentModel _model; @override void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } @override void initState() { super.initState(); _model = createModel(context, () => HeaderButtonsComponentModel()); } @override void dispose() { routeObserver.unsubscribe(this); _model.maybeDispose(); super.dispose(); } @override void didUpdateWidget(HeaderButtonsComponentWidget 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); context.watch(); return Align( alignment: AlignmentDirectional(0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ AlignedTooltip( content: Padding( padding: EdgeInsets.all(4.0), child: Text( FFLocalizations.of(context).getText( '17msrach' /* Menu openen */, ), 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: FlutterFlowIconButton( borderRadius: 8.0, buttonSize: 40.0, fillColor: Color(0xFFB50808), icon: Icon( Icons.dehaze_outlined, color: FlutterFlowTheme.of(context).info, size: 24.0, ), onPressed: () async { Scaffold.of(context).openDrawer(); }, ), ), if (widget!.showBackButton == true) AlignedTooltip( content: Padding( padding: EdgeInsets.all(4.0), child: Text( FFLocalizations.of(context).getText( 'f8ay39rg' /* Terug */, ), 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: Padding( padding: EdgeInsetsDirectional.fromSTEB(4.0, 0.0, 0.0, 0.0), child: FlutterFlowIconButton( borderColor: Color(0x00FF0000), borderRadius: 30.0, borderWidth: 1.0, buttonSize: 50.0, fillColor: Color(0xFFB50808), icon: Icon( Icons.arrow_back_outlined, color: Colors.white, size: 30.0, ), onPressed: () async { context.pop(); }, ), ), ), Builder( builder: (context) { if (FFAppState() .favorieteGemeenteIds .contains(FFAppState().gemeenteSelectId) == true) { return FlutterFlowIconButton( borderRadius: 8.0, buttonSize: 40.0, fillColor: Color(0xFFB50808), icon: Icon( Icons.favorite, color: Colors.white, size: 24.0, ), onPressed: () async { await actions.drupalRequest( 'POST', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}', ); FFAppState().removeFromFavorieteGemeenteIds( FFAppState().gemeenteSelectId); safeSetState(() {}); }, ); } else { return FlutterFlowIconButton( borderRadius: 8.0, buttonSize: 40.0, fillColor: Color(0xFFB50808), icon: Icon( Icons.favorite_border, color: Colors.white, size: 24.0, ), onPressed: () async { await actions.drupalRequest( 'POST', 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json', FFAppState().userSessionname, FFAppState().userSessionid, FFAppState().userToken, '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}', ); FFAppState().addToFavorieteGemeenteIds( FFAppState().gemeenteSelectId); safeSetState(() {}); }, ); } }, ), ], ), ); } }