Custom code die via de FlutterFlow Custom Code-editor ingevoerd moet worden.
Staat hier als .txt zodat flutter analyze en de export er niets mee doen —
deze map ligt bewust buiten lib/ en overleeft daarom een export-code.
Plak bij het invoeren alles onder de // DO NOT REMOVE-regel — inclusief de
eigen importregels die daar direct onder staan; de FlutterFlow-importkop
erbóven genereert de builder zelf. In beide bestanden staat een
⬇ PLAK VANAF HIER ⬇-markering op precies de goede plek.
⚠️ Vergeet die importregel niet. Gebeurde 2026-09-13: zonder
import 'package:http/http.dart' as http; slaat de Custom Code-editor de
action gewoon op en meldt de builder niets, maar faalt de Gradle-build met
Error: Undefined name 'http'. De editor controleert dit dus niet voor je.
check_verbinding.dart.txt — Custom Action checkVerbinding,
Return Type Boolean, geen argumenten.verbindings_banner.dart.txt — Custom Widget VerbindingsBanner,
parameters width (double, optioneel), height (double, optioneel),
tekst (String, optioneel). Laat die drie leeg bij het plaatsen.⚠️ Het widget neemt bewust GEEN ruimte in de layout in (SizedBox.shrink)
en toont de melding via de ScaffoldMessenger over de pagina heen. Reden: de
header zit in een FlexibleSpaceBar.background met een vaste hoogte van 74 px.
Zet het dus als laatste kind in de bestaande Row van
HeaderButtonsComponent — niet in een Column eromheen en niet in een
Container met een vaste hoogte. Zie de valkuil in TASKS.md.
Beide horen bij de verbindingsmelding in de header; de bouwstappen staan in
TASKS.md.
evenement_create.dart.txt — Custom Action evenementCreate,
volledige code zoals hij nu in de builder staat plus één extra blok
direct na de Datum is verplicht-controle: is de einddatum gevuld én ligt
hij vóór de startdatum, dan komt {'success': false, 'error': 'De
einddatum ligt vóór de startdatum'} terug. De app toont die tekst al in
de bestaande snackbar; er hoeft aan de pagina niets te veranderen.stadsactiviteit_create.dart.txt — idem voor stadsactiviteitCreate.Argumenten, volgorde en return type blijven exact gelijk, dus de bestaande
bindingen op ButtonIndienen blijven werken. Invoeren: Custom Code →
action openen → Cancel/Discard is niet nodig, gewoon de hele body vervangen
(alles onder // DO NOT REMOVE), Ctrl+S, en verifiëren met een verse
export op de string einddatum ligt vóór.