check_verbinding.dart.txt 1.8 KB

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