Connective
Introduction
Nylo Website fournit des widgets et des utilitaires sensibles a la connectivite pour vous aider a construire des applications qui reagissent aux changements de reseau. Le widget Connective se reconstruit automatiquement lorsque la connectivite change, tandis que le helper NyConnectivity fournit des methodes statiques pour verifier l'etat de la connexion.
Widget Connective
Le widget Connective ecoute les changements de connectivite et se reconstruit en fonction de l'etat actuel du reseau.
Constructeurs bases sur l'etat
Fournissez differents widgets pour chaque type de connexion :
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
)
Etats disponibles
| Propriete | Description |
|---|---|
onWifi |
Widget lorsque connecte via WiFi |
onMobile |
Widget lorsque connecte via donnees mobiles |
onEthernet |
Widget lorsque connecte via Ethernet |
onVpn |
Widget lorsque connecte via VPN |
onBluetooth |
Widget lorsque connecte via Bluetooth |
onOther |
Widget pour les autres types de connexion |
onNone |
Widget lorsque hors ligne |
child |
Widget par defaut si aucun gestionnaire specifique n'est fourni |
Constructeur personnalise
Utilisez Connective.builder pour un controle total sur l'interface :
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}');
},
)
Le constructeur recoit :
context- BuildContextstate- enumNyConnectivityState(wifi, mobile, ethernet, vpn, bluetooth, other, none)results-List<ConnectivityResult>pour verifier plusieurs connexions
Ecouter les changements
Utilisez onConnectivityChanged pour reagir lorsque la connectivite change :
Connective(
onConnectivityChanged: (state, results) {
if (state == NyConnectivityState.none) {
showSnackbar('You went offline');
} else {
showSnackbar('Back online!');
}
},
child: MyContent(),
)
Widget OfflineBanner
Affichez une banniere en haut de l'ecran lorsque hors ligne :
Scaffold(
body: Stack(
children: [
// Your main content
MyPageContent(),
// Offline banner (auto-hides when online)
OfflineBanner(),
],
),
)
Personnaliser la banniere
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),
)
Helper NyConnectivity
La classe NyConnectivity fournit des methodes statiques pour verifier la connectivite :
Verifier si en ligne/hors ligne
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();
}
Verifier des types de connexion specifiques
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();
Obtenir l'etat actuel
// 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.
Ecouter les changements
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();
}
Execution conditionnelle
// 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(),
);
Extensions de widgets
Ajoutez rapidement la sensibilite a la connectivite a n'importe quel widget :
Afficher une alternative hors ligne
// Show a different widget when offline
MyContent().connectiveOr(
offline: Text('Content unavailable offline'),
)
Afficher uniquement en ligne
// Hide completely when offline
SyncButton().onlyOnline()
Afficher uniquement hors ligne
// Show only when offline
OfflineMessage().onlyOffline()
Parametres
Connective
| Parametre | Type | Par defaut | Description |
|---|---|---|---|
onWifi |
Widget? |
- | Widget lorsque sur WiFi |
onMobile |
Widget? |
- | Widget lorsque sur donnees mobiles |
onEthernet |
Widget? |
- | Widget lorsque sur Ethernet |
onVpn |
Widget? |
- | Widget lorsque sur VPN |
onBluetooth |
Widget? |
- | Widget lorsque sur Bluetooth |
onOther |
Widget? |
- | Widget pour d'autres connexions |
onNone |
Widget? |
- | Widget lorsque hors ligne |
child |
Widget? |
- | Widget par defaut |
showLoadingOnInit |
bool |
false |
Afficher le chargement pendant la verification |
loadingWidget |
Widget? |
- | Widget de chargement personnalise |
onConnectivityChanged |
Function? |
- | Callback lors du changement |
OfflineBanner
| Parametre | Type | Par defaut | Description |
|---|---|---|---|
message |
String |
'No internet connection' |
Texte de la banniere |
backgroundColor |
Color? |
Colors.red.shade700 |
Arriere-plan de la banniere |
textColor |
Color? |
Colors.white |
Couleur du texte |
icon |
IconData? |
Icons.wifi_off |
Icone de la banniere |
height |
double |
40 |
Hauteur de la banniere |
animate |
bool |
true |
Activer l'animation de glissement |
animationDuration |
Duration |
300ms |
Duree de l'animation |
Enum NyConnectivityState
| Valeur | Description |
|---|---|
wifi |
Connecte via WiFi |
mobile |
Connecte via donnees mobiles |
ethernet |
Connecte via Ethernet |
vpn |
Connecte via VPN |
bluetooth |
Connecte via Bluetooth |
other |
Autre type de connexion |
none |
Aucune connexion |