Connective
परिचय
Nylo Website कनेक्टिविटी-अवेयर विजेट्स और यूटिलिटीज़ प्रदान करता है जो आपको नेटवर्क बदलावों पर प्रतिक्रिया करने वाले ऐप्स बनाने में मदद करते हैं। Connective विजेट कनेक्टिविटी बदलने पर स्वचालित रूप से रीबिल्ड होता है, जबकि NyConnectivity हेल्पर कनेक्शन स्थिति जाँचने के लिए स्टैटिक मेथड्स प्रदान करता है।
Connective विजेट
Connective विजेट कनेक्टिविटी बदलावों को सुनता है और वर्तमान नेटवर्क स्थिति के आधार पर रीबिल्ड होता है।
स्टेट-आधारित बिल्डर्स
प्रत्येक कनेक्शन प्रकार के लिए अलग-अलग विजेट्स प्रदान करें:
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
)
उपलब्ध स्टेट्स
| प्रॉपर्टी | विवरण |
|---|---|
onWifi |
WiFi से कनेक्ट होने पर विजेट |
onMobile |
मोबाइल डेटा से कनेक्ट होने पर विजेट |
onEthernet |
ईथरनेट से कनेक्ट होने पर विजेट |
onVpn |
VPN से कनेक्ट होने पर विजेट |
onBluetooth |
ब्लूटूथ से कनेक्ट होने पर विजेट |
onOther |
अन्य कनेक्शन प्रकारों के लिए विजेट |
onNone |
ऑफ़लाइन होने पर विजेट |
child |
कोई विशिष्ट हैंडलर न होने पर डिफ़ॉल्ट विजेट |
कस्टम बिल्डर
UI पर पूर्ण नियंत्रण के लिए Connective.builder का उपयोग करें:
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}');
},
)
बिल्डर को प्राप्त होता है:
context- BuildContextstate-NyConnectivityStateenum (wifi, mobile, ethernet, vpn, bluetooth, other, none)results-List<ConnectivityResult>एकाधिक कनेक्शन जाँचने के लिए
बदलावों को सुनना
कनेक्टिविटी बदलने पर प्रतिक्रिया करने के लिए onConnectivityChanged का उपयोग करें:
Connective(
onConnectivityChanged: (state, results) {
if (state == NyConnectivityState.none) {
showSnackbar('You went offline');
} else {
showSnackbar('Back online!');
}
},
child: MyContent(),
)
OfflineBanner विजेट
ऑफ़लाइन होने पर स्क्रीन के शीर्ष पर एक बैनर दिखाएँ:
Scaffold(
body: Stack(
children: [
// Your main content
MyPageContent(),
// Offline banner (auto-hides when online)
OfflineBanner(),
],
),
)
बैनर कस्टमाइज़ करना
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 हेल्पर
NyConnectivity क्लास कनेक्टिविटी जाँचने के लिए स्टैटिक मेथड्स प्रदान करता है:
ऑनलाइन/ऑफ़लाइन जाँचें
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();
}
विशिष्ट कनेक्शन प्रकार जाँचें
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();
वर्तमान स्थिति प्राप्त करें
// 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.
बदलावों को सुनें
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();
}
सशर्त निष्पादन
// 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(),
);
विजेट एक्सटेंशन्स
किसी भी विजेट में जल्दी से कनेक्टिविटी अवेयरनेस जोड़ें:
ऑफ़लाइन विकल्प दिखाएँ
// Show a different widget when offline
MyContent().connectiveOr(
offline: Text('Content unavailable offline'),
)
केवल ऑनलाइन होने पर दिखाएँ
// Hide completely when offline
SyncButton().onlyOnline()
केवल ऑफ़लाइन होने पर दिखाएँ
// Show only when offline
OfflineMessage().onlyOffline()
पैरामीटर्स
Connective
| पैरामीटर | टाइप | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
onWifi |
Widget? |
- | WiFi पर होने पर विजेट |
onMobile |
Widget? |
- | मोबाइल डेटा पर होने पर विजेट |
onEthernet |
Widget? |
- | ईथरनेट पर होने पर विजेट |
onVpn |
Widget? |
- | VPN पर होने पर विजेट |
onBluetooth |
Widget? |
- | ब्लूटूथ पर होने पर विजेट |
onOther |
Widget? |
- | अन्य कनेक्शन के लिए विजेट |
onNone |
Widget? |
- | ऑफ़लाइन होने पर विजेट |
child |
Widget? |
- | डिफ़ॉल्ट विजेट |
showLoadingOnInit |
bool |
false |
जाँच करते समय लोडिंग दिखाएँ |
loadingWidget |
Widget? |
- | कस्टम लोडिंग विजेट |
onConnectivityChanged |
Function? |
- | बदलाव पर कॉलबैक |
OfflineBanner
| पैरामीटर | टाइप | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
message |
String |
'No internet connection' |
बैनर टेक्स्ट |
backgroundColor |
Color? |
Colors.red.shade700 |
बैनर बैकग्राउंड |
textColor |
Color? |
Colors.white |
टेक्स्ट रंग |
icon |
IconData? |
Icons.wifi_off |
बैनर आइकन |
height |
double |
40 |
बैनर ऊँचाई |
animate |
bool |
true |
स्लाइड एनिमेशन सक्षम करें |
animationDuration |
Duration |
300ms |
एनिमेशन अवधि |
NyConnectivityState Enum
| मान | विवरण |
|---|---|
wifi |
WiFi के माध्यम से कनेक्ट |
mobile |
मोबाइल डेटा के माध्यम से कनेक्ट |
ethernet |
ईथरनेट के माध्यम से कनेक्ट |
vpn |
VPN के माध्यम से कनेक्ट |
bluetooth |
ब्लूटूथ के माध्यम से कनेक्ट |
other |
अन्य कनेक्शन प्रकार |
none |
कोई कनेक्शन नहीं |