// Automatic FlutterFlow imports import '/backend/schema/structs/index.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import 'index.dart'; // Imports other custom actions import '/flutter_flow/custom_functions.dart'; // Imports custom functions import 'package:flutter/material.dart'; // Begin custom action code // DO NOT REMOVE OR MODIFY THE CODE ABOVE! // ⬇⬇⬇ PLAK VANAF HIER — deze importregel hoort erbij! ⬇⬇⬇ // Zonder deze regel faalt de build met: Undefined name 'http'. import 'package:http/http.dart' as http; /// Kijkt of de server bereikbaar is en zet App State `geenVerbinding`. /// Geeft true terug als de verbinding in orde is. /// /// Bewust een HEAD-request op de site-root: die levert 0 bytes body op en /// antwoordt in ongeveer 60 ms, dus dit is verwaarloosbaar naast de gewone /// data-calls. We kijken alleen of de server antwoordt, niet wat hij zegt. Future checkVerbinding() async { final basis = FFAppState().apiBaseUrl.trim().isEmpty ? 'https://uitgaanskrant.com' : FFAppState().apiBaseUrl.trim(); bool bereikbaar; try { final response = await http .head(Uri.parse(basis)) .timeout(const Duration(seconds: 6)); // Elke echte HTTP-reactie betekent dat we de server hebben bereikt. // Alleen een 5xx rekenen we als 'niet bruikbaar'. bereikbaar = response.statusCode < 500; } catch (_) { // Geen netwerk, DNS-fout, timeout, certificaatfout: allemaal 'geen verbinding'. bereikbaar = false; } final nieuweWaarde = !bereikbaar; if (FFAppState().geenVerbinding != nieuweWaarde) { // update() roept notifyListeners() aan; zonder dat merkt de banner niets. FFAppState().update(() { FFAppState().geenVerbinding = nieuweWaarde; }); } return bereikbaar; }