I am using the following code which I want when clicking the ‘OK’ button in the ‘You have internet’ alert dialog, to refresh (reload) the page (Scaffold).
<code> // Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/backend/schema/enums/enums.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/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 'dart:io'; // Import Platform for checking the operating system
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
import 'package:flutter/services.dart'; // Needed for closing the app
import 'dart:async';
import 'dart:ui';
class InternetConnectionMonitor {
Timer? _timer;
OverlayEntry? _noInternetOverlayEntry;
OverlayEntry? _restoredInternetOverlayEntry;
OverlayEntry? _modalBarrierEntry;
bool _hasInternet = true;
BuildContext? _originalContext;
Future<void> startMonitoring(BuildContext context, String language) async {
_originalContext = context;
if (_timer == null) {
_timer = Timer.periodic(Duration(seconds: 5), (timer) async {
await checkInternetStatus(context, language);
});
await checkInternetStatus(context, language); // Initial check
}
}
void stopMonitoring() {
if (_timer != null) {
_timer?.cancel();
_timer = null;
}
removeNoInternetDialog();
removeRestoredInternetDialog();
removeModalBarrier();
}
Future<void> checkInternetStatus(BuildContext context, String language) async {
final InternetConnection internetConnection = InternetConnection();
final status = await internetConnection.hasInternetAccess;
if (!status && _hasInternet) {
_hasInternet = false;
if (_noInternetOverlayEntry == null) {
showNoInternetDialog(context, language);
}
} else if (status && !_hasInternet) {
_hasInternet = true;
removeNoInternetDialog();
if (_restoredInternetOverlayEntry == null) {
showRestoredInternetDialog(context, language);
}
}
}
void showNoInternetDialog(BuildContext context, String language) {
String title = language == 'el' ? 'Χωρίς σύνδεση' : 'No Internet';
String message = language == 'el'
? 'Δεν υπάρχει σύνδεση στο διαδίκτυο.'
: 'You have no internet connection.';
addModalBarrier(context);
_noInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi_off, color: Colors.red),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
removeModalBarrier();
if (Platform.isAndroid) {
SystemNavigator.pop();
} else if (Platform.isIOS) {
exit(0);
}
},
),
],
);
},
);
if (_noInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_noInternetOverlayEntry!);
}
}
void removeNoInternetDialog() {
if (_noInternetOverlayEntry != null) {
_noInternetOverlayEntry!.remove();
_noInternetOverlayEntry = null;
}
}
void showRestoredInternetDialog(BuildContext context, String language) {
String title = 'Connection Restored';
String message = 'Your internet connection has been restored.';
addModalBarrier(context);
_restoredInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi, color: Colors.green),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
removeModalBarrier();
// Trigger a rebuild of the current page
if (_originalContext != null) {
(_originalContext as Element).reassemble();
}
},
),
],
);
},
);
if (_restoredInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_restoredInternetOverlayEntry!);
}
}
void removeRestoredInternetDialog() {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
}
void addModalBarrier(BuildContext context) {
if (_modalBarrierEntry == null) {
_modalBarrierEntry = OverlayEntry(
builder: (BuildContext context) {
return Stack(
children: [
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Colors.black.withOpacity(0.5),
),
),
ModalBarrier(
dismissible: false,
color: Colors.transparent,
),
],
);
},
);
Overlay.of(context)!.insert(_modalBarrierEntry!);
}
}
void removeModalBarrier() {
if (_modalBarrierEntry != null) {
_modalBarrierEntry!.remove();
_modalBarrierEntry = null;
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
await startMonitoring(context, language);
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
InternetConnectionMonitor _monitor = InternetConnectionMonitor();
await _monitor.startMonitoring(context, language);
}
</code>
<code> // Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/backend/schema/enums/enums.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/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 'dart:io'; // Import Platform for checking the operating system
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
import 'package:flutter/services.dart'; // Needed for closing the app
import 'dart:async';
import 'dart:ui';
class InternetConnectionMonitor {
Timer? _timer;
OverlayEntry? _noInternetOverlayEntry;
OverlayEntry? _restoredInternetOverlayEntry;
OverlayEntry? _modalBarrierEntry;
bool _hasInternet = true;
BuildContext? _originalContext;
Future<void> startMonitoring(BuildContext context, String language) async {
_originalContext = context;
if (_timer == null) {
_timer = Timer.periodic(Duration(seconds: 5), (timer) async {
await checkInternetStatus(context, language);
});
await checkInternetStatus(context, language); // Initial check
}
}
void stopMonitoring() {
if (_timer != null) {
_timer?.cancel();
_timer = null;
}
removeNoInternetDialog();
removeRestoredInternetDialog();
removeModalBarrier();
}
Future<void> checkInternetStatus(BuildContext context, String language) async {
final InternetConnection internetConnection = InternetConnection();
final status = await internetConnection.hasInternetAccess;
if (!status && _hasInternet) {
_hasInternet = false;
if (_noInternetOverlayEntry == null) {
showNoInternetDialog(context, language);
}
} else if (status && !_hasInternet) {
_hasInternet = true;
removeNoInternetDialog();
if (_restoredInternetOverlayEntry == null) {
showRestoredInternetDialog(context, language);
}
}
}
void showNoInternetDialog(BuildContext context, String language) {
String title = language == 'el' ? 'Χωρίς σύνδεση' : 'No Internet';
String message = language == 'el'
? 'Δεν υπάρχει σύνδεση στο διαδίκτυο.'
: 'You have no internet connection.';
addModalBarrier(context);
_noInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi_off, color: Colors.red),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
removeModalBarrier();
if (Platform.isAndroid) {
SystemNavigator.pop();
} else if (Platform.isIOS) {
exit(0);
}
},
),
],
);
},
);
if (_noInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_noInternetOverlayEntry!);
}
}
void removeNoInternetDialog() {
if (_noInternetOverlayEntry != null) {
_noInternetOverlayEntry!.remove();
_noInternetOverlayEntry = null;
}
}
void showRestoredInternetDialog(BuildContext context, String language) {
String title = 'Connection Restored';
String message = 'Your internet connection has been restored.';
addModalBarrier(context);
_restoredInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi, color: Colors.green),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
removeModalBarrier();
// Trigger a rebuild of the current page
if (_originalContext != null) {
(_originalContext as Element).reassemble();
}
},
),
],
);
},
);
if (_restoredInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_restoredInternetOverlayEntry!);
}
}
void removeRestoredInternetDialog() {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
}
void addModalBarrier(BuildContext context) {
if (_modalBarrierEntry == null) {
_modalBarrierEntry = OverlayEntry(
builder: (BuildContext context) {
return Stack(
children: [
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Colors.black.withOpacity(0.5),
),
),
ModalBarrier(
dismissible: false,
color: Colors.transparent,
),
],
);
},
);
Overlay.of(context)!.insert(_modalBarrierEntry!);
}
}
void removeModalBarrier() {
if (_modalBarrierEntry != null) {
_modalBarrierEntry!.remove();
_modalBarrierEntry = null;
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
await startMonitoring(context, language);
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
InternetConnectionMonitor _monitor = InternetConnectionMonitor();
await _monitor.startMonitoring(context, language);
}
</code>
// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/backend/schema/enums/enums.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/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 'dart:io'; // Import Platform for checking the operating system
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
import 'package:flutter/services.dart'; // Needed for closing the app
import 'dart:async';
import 'dart:ui';
class InternetConnectionMonitor {
Timer? _timer;
OverlayEntry? _noInternetOverlayEntry;
OverlayEntry? _restoredInternetOverlayEntry;
OverlayEntry? _modalBarrierEntry;
bool _hasInternet = true;
BuildContext? _originalContext;
Future<void> startMonitoring(BuildContext context, String language) async {
_originalContext = context;
if (_timer == null) {
_timer = Timer.periodic(Duration(seconds: 5), (timer) async {
await checkInternetStatus(context, language);
});
await checkInternetStatus(context, language); // Initial check
}
}
void stopMonitoring() {
if (_timer != null) {
_timer?.cancel();
_timer = null;
}
removeNoInternetDialog();
removeRestoredInternetDialog();
removeModalBarrier();
}
Future<void> checkInternetStatus(BuildContext context, String language) async {
final InternetConnection internetConnection = InternetConnection();
final status = await internetConnection.hasInternetAccess;
if (!status && _hasInternet) {
_hasInternet = false;
if (_noInternetOverlayEntry == null) {
showNoInternetDialog(context, language);
}
} else if (status && !_hasInternet) {
_hasInternet = true;
removeNoInternetDialog();
if (_restoredInternetOverlayEntry == null) {
showRestoredInternetDialog(context, language);
}
}
}
void showNoInternetDialog(BuildContext context, String language) {
String title = language == 'el' ? 'Χωρίς σύνδεση' : 'No Internet';
String message = language == 'el'
? 'Δεν υπάρχει σύνδεση στο διαδίκτυο.'
: 'You have no internet connection.';
addModalBarrier(context);
_noInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi_off, color: Colors.red),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
removeModalBarrier();
if (Platform.isAndroid) {
SystemNavigator.pop();
} else if (Platform.isIOS) {
exit(0);
}
},
),
],
);
},
);
if (_noInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_noInternetOverlayEntry!);
}
}
void removeNoInternetDialog() {
if (_noInternetOverlayEntry != null) {
_noInternetOverlayEntry!.remove();
_noInternetOverlayEntry = null;
}
}
void showRestoredInternetDialog(BuildContext context, String language) {
String title = 'Connection Restored';
String message = 'Your internet connection has been restored.';
addModalBarrier(context);
_restoredInternetOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
return AlertDialog(
title: Row(
children: [
Icon(Icons.wifi, color: Colors.green),
SizedBox(width: 10),
Text(title),
],
),
content: Text(message),
actions: [
TextButton(
child: Text('OK'),
onPressed: () {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
removeModalBarrier();
// Trigger a rebuild of the current page
if (_originalContext != null) {
(_originalContext as Element).reassemble();
}
},
),
],
);
},
);
if (_restoredInternetOverlayEntry != null) {
Overlay.of(context)!.insert(_restoredInternetOverlayEntry!);
}
}
void removeRestoredInternetDialog() {
if (_restoredInternetOverlayEntry != null) {
_restoredInternetOverlayEntry!.remove();
_restoredInternetOverlayEntry = null;
}
}
void addModalBarrier(BuildContext context) {
if (_modalBarrierEntry == null) {
_modalBarrierEntry = OverlayEntry(
builder: (BuildContext context) {
return Stack(
children: [
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Colors.black.withOpacity(0.5),
),
),
ModalBarrier(
dismissible: false,
color: Colors.transparent,
),
],
);
},
);
Overlay.of(context)!.insert(_modalBarrierEntry!);
}
}
void removeModalBarrier() {
if (_modalBarrierEntry != null) {
_modalBarrierEntry!.remove();
_modalBarrierEntry = null;
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
await startMonitoring(context, language);
}
}
Future<void> monitorInternetConnection(
BuildContext context, String language) async {
InternetConnectionMonitor _monitor = InternetConnectionMonitor();
await _monitor.startMonitoring(context, language);
}
The problem with this code is that when I click OK, the page becomes grey instead of refreshing (reloading). How can I achieve what I want to do? What do I need to change in my code?