Connective
Einleitung
Nylo Website bietet konnektivitätsbewusste Widgets und Hilfsmittel, um Apps zu erstellen, die auf Netzwerkänderungen reagieren. Das Connective-Widget baut sich automatisch neu auf, wenn sich die Konnektivität ändert, während der NyConnectivity-Helfer statische Methoden zur Prüfung des Verbindungsstatus bereitstellt.
Connective-Widget
Das Connective-Widget lauscht auf Konnektivitätsänderungen und baut sich basierend auf dem aktuellen Netzwerkzustand neu auf.
Zustandsbasierte Builder
Stellen Sie verschiedene Widgets für jeden Verbindungstyp bereit:
Connective(
onWifi: Text('Connected via WiFi'),
onMobile: Text('Connected via Mobile Data'),
onNone: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.wifi_off, size: 64),
Text('No internet connection'),
],
),
child: Text('Connected'), // Default for unspecified states
)
Verfügbare Zustände
| Eigenschaft | Beschreibung |
|---|---|
onWifi |
Widget bei WiFi-Verbindung |
onMobile |
Widget bei Mobilfunkverbindung |
onEthernet |
Widget bei Ethernet-Verbindung |
onVpn |
Widget bei VPN-Verbindung |
onBluetooth |
Widget bei Bluetooth-Verbindung |
onOther |
Widget für andere Verbindungstypen |
onNone |
Widget wenn offline |
child |
Standard-Widget, wenn kein spezifischer Handler bereitgestellt wird |
Benutzerdefinierter Builder
Verwenden Sie Connective.builder für volle Kontrolle über die UI:
Connective.builder(
builder: (context, state, results) {
if (state == NyConnectivityState.none) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.cloud_off, size: 64, color: Colors.grey),
SizedBox(height: 16),
Text('You are offline'),
ElevatedButton(
onPressed: () => Navigator.pop(context),
child: Text('Go Back'),
),
],
),
);
}
// Show connection type
return Text('Connected via: ${state.name}');
},
)
Der Builder empfängt:
context- BuildContextstate-NyConnectivityState-Enum (wifi, mobile, ethernet, vpn, bluetooth, other, none)results-List<ConnectivityResult>zur Prüfung mehrerer Verbindungen
Auf Änderungen lauschen
Verwenden Sie onConnectivityChanged, um auf Konnektivitätsänderungen zu reagieren:
Connective(
onConnectivityChanged: (state, results) {
if (state == NyConnectivityState.none) {
showSnackbar('You went offline');
} else {
showSnackbar('Back online!');
}
},
child: MyContent(),
)
OfflineBanner-Widget
Zeigen Sie ein Banner am oberen Bildschirmrand an, wenn offline:
Scaffold(
body: Stack(
children: [
// Your main content
MyPageContent(),
// Offline banner (auto-hides when online)
OfflineBanner(),
],
),
)
Banner anpassen
OfflineBanner(
message: 'Check your connection',
backgroundColor: Colors.orange,
textColor: Colors.white,
icon: Icons.signal_wifi_off,
height: 50,
animate: true, // Slide in/out animation
animationDuration: Duration(milliseconds: 200),
)
NyConnectivity-Helfer
Die Klasse NyConnectivity bietet statische Methoden zur Prüfung der Konnektivität:
Online/Offline prüfen
if (await NyConnectivity.isOnline()) {
// Make API request
final data = await api.fetchData();
} else {
// Load from cache
final data = await cache.getData();
}
// Or check if offline
if (await NyConnectivity.isOffline()) {
showOfflineMessage();
}
Bestimmte Verbindungstypen prüfen
if (await NyConnectivity.isWifi()) {
// Download large files on WiFi
await downloadLargeFile();
}
if (await NyConnectivity.isMobile()) {
// Warn about data usage
showDataWarning();
}
// Other methods:
await NyConnectivity.isEthernet();
await NyConnectivity.isVpn();
await NyConnectivity.isBluetooth();
Aktuellen Status abrufen
// Get all active connection types
List<ConnectivityResult> results = await NyConnectivity.status();
if (results.contains(ConnectivityResult.wifi)) {
print('WiFi is active');
}
// Get human-readable string
String type = await NyConnectivity.connectionTypeString();
print('Connected via: $type'); // "WiFi", "Mobile", "None", etc.
Auf Änderungen lauschen
StreamSubscription subscription = NyConnectivity.stream().listen((results) {
if (results.contains(ConnectivityResult.none)) {
showOfflineUI();
} else {
showOnlineUI();
}
});
// Don't forget to cancel when done
@override
void dispose() {
subscription.cancel();
super.dispose();
}
Bedingte Ausführung
// Execute only when online (returns null if offline)
final data = await NyConnectivity.whenOnline(() async {
return await api.fetchData();
});
if (data == null) {
showOfflineMessage();
}
// Execute different callbacks based on status
final result = await NyConnectivity.when(
online: () async => await api.fetchData(),
offline: () async => await cache.getData(),
);
Widget-Erweiterungen
Fügen Sie jedem Widget schnell Konnektivitätsbewusstsein hinzu:
Offline-Alternative anzeigen
// Show a different widget when offline
MyContent().connectiveOr(
offline: Text('Content unavailable offline'),
)
Nur online anzeigen
// Hide completely when offline
SyncButton().onlyOnline()
Nur offline anzeigen
// Show only when offline
OfflineMessage().onlyOffline()
Parameter
Connective
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
onWifi |
Widget? |
- | Widget bei WiFi |
onMobile |
Widget? |
- | Widget bei Mobilfunk |
onEthernet |
Widget? |
- | Widget bei Ethernet |
onVpn |
Widget? |
- | Widget bei VPN |
onBluetooth |
Widget? |
- | Widget bei Bluetooth |
onOther |
Widget? |
- | Widget für andere Verbindungen |
onNone |
Widget? |
- | Widget wenn offline |
child |
Widget? |
- | Standard-Widget |
showLoadingOnInit |
bool |
false |
Laden beim Prüfen anzeigen |
loadingWidget |
Widget? |
- | Benutzerdefiniertes Lade-Widget |
onConnectivityChanged |
Function? |
- | Callback bei Änderung |
OfflineBanner
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
message |
String |
'No internet connection' |
Bannertext |
backgroundColor |
Color? |
Colors.red.shade700 |
Banner-Hintergrund |
textColor |
Color? |
Colors.white |
Textfarbe |
icon |
IconData? |
Icons.wifi_off |
Banner-Icon |
height |
double |
40 |
Banner-Höhe |
animate |
bool |
true |
Slide-Animation aktivieren |
animationDuration |
Duration |
300ms |
Animationsdauer |
NyConnectivityState-Enum
| Wert | Beschreibung |
|---|---|
wifi |
Verbunden über WiFi |
mobile |
Verbunden über Mobilfunk |
ethernet |
Verbunden über Ethernet |
vpn |
Verbunden über VPN |
bluetooth |
Verbunden über Bluetooth |
other |
Anderer Verbindungstyp |
none |
Keine Verbindung |