// 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! 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; } // Set your action name, define your arguments and return parameter, // and then add the boilerplate code using the `` button on the right!