Я разрабатываю приложение, которое извлекает некоторые данные из целого rnet. Чтобы избежать проблем с подключением inte rnet, я добавил пакет подключения .
Если inte rnet подключается при запуске приложения, а затем подключение inte rnet выключен, я могу отобразить контейнер с текстом «нет inte rnet». Если я снова включу inte rnet, отобразятся данные.
Код для достижения этой цели следующий:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
class CheckNetworkPage extends StatefulWidget {
@override
_CheckNetworkPageState createState() => _CheckNetworkPageState();
}
class _CheckNetworkPageState extends State<CheckNetworkPage> {
StreamSubscription<ConnectivityResult> _networkSubscription;
Future<List<Data>> fetchData() async {
// Code to fetch data
}
@override
initState() {
super.initState();
fetchData();
_networkSubscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
_connectionStatus = result.toString();
print(_connectionStatus);
if (result == ConnectivityResult.wifi ||
result == ConnectivityResult.mobile ||
result == ConnectivityResult.none) {
print("Result: $result");
setState(() {});
}
});
}
// Cancel subscription after you are done
@override
dispose() {
super.dispose();
_networkSubscription.cancel();
}
@override
Widget build(BuildContext context) {
// More code. I can use the result of _connectionStatus to build my app
}
}
Однако, если приложение запускается без inte rnet, когда я его включаю, данные не загружаются, так как он извлекается в initState()
.
Как извлечь данные, если они не были извлечены ранее, а соединение rnet включено ?