[英]Continuous stream connectivity in Flutter
我已經成功地檢查了這個主菜單頁面上的連接,但是我需要在我的應用程序的每個其他頁面上不斷地檢查這個。 有沒有另一種方法可以讓我不斷檢查連接,而不必在任何地方重新編寫我的代碼? 還有其他類似於我的問題,但我對如何從連接<\/a>插件包實現連續連接流有點迷茫。
class MainMenu extends StatefulWidget {
MainMenu({this.latCoordinates, this.longCoordinates, this.postcode});
final double latCoordinates;
final double longCoordinates;
final String postcode;
@override
_MainMenuState createState() => _MainMenuState();
}
class _MainMenuState extends State<MainMenu> with SingleTickerProviderStateMixin {
bool isConnected = false;
bool showSpinner = false;
void connect() async {
try {
final result = await InternetAddress.lookup('example.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
setState(() {
isConnected = true;
showSpinner = false;
});
}
} on SocketException catch (_) {
setState(() {
isConnected = false;
Timer(Duration(seconds: 2), (){
setState(() {
showSpinner = false;
});
});
// showSpinner = false;
});
}
}
@override
void initState() {
connect();
super.initState();
}
@override
Widget build(BuildContext context) {
return isConnected ? Scaffold(
backgroundColor: Colors.white,
) :
ModalProgressHUD(
inAsyncCall: showSpinner,
child: Scaffold(
backgroundColor: Colors.green,
);
}
}
您可以使用AppStateProvider和應用程序級showDialog()
。 請記住,此包中有一個onConnectivityChanged
屬性。 您不需要在每個頁面上檢查連接。 它自己做。 你只是聽它。
欲了解更多信息。
像這樣為我固定使用。
@override
void initState() {
final Stream<List<PurchaseDetails>> purchaseUpdated =
_inAppPurchase.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList) {
_listenToPurchaseUpdated(purchaseDetailsList);
}, onDone: () {
_subscription.cancel();
}, onError: (error) {
// handle error here.
});
initStoreInfo();
super.initState();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.