我正在使用 Connectivity().checkConnectivity()
检查连接它正在工作,但是当我导航到此页面时 setState()
没有调用。
要导航到主页到另一个页面,我正在使用 Navigator.push(context, MaterialPageRoute(builder: (context) => search()));
这是我的下一页
class search extends StatefulWidget {
@override
_searchState createState() => _searchState();
}
class _searchState extends State<search> {
List<filter> _list = [];
List<filter> to_display = [];
bool isoffline;
Future<void> connectivity() async {
var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
// I am connected to a mobile network.
setState(() {
isoffline = true;
});
print("connected");
} else if (connectivityResult == ConnectivityResult.wifi) {
setState(() {
isoffline = true;
});
// I am connected to a wifi network.
print("connected");
} else {
setState(() {
isoffline = false;
});
print(
"dissconneteddsfffffffffffffffffffffffffffffffffffffffffffffffffffffffdsfsd");
}
}
Future _future;
@override
void initState() {
mylist().then((value) {
setState(() {
_list = to_display = value;
});
});
connectivity();
print("value${isoffline}"); // this value is on null
_future = data();
super.initState();
}
print("value${isoffline}");
// 此值为空
答案 0 :(得分:2)
函数连接是一个异步函数。您正在调用该函数并立即检查布尔值,这就是您获得空值的原因。您必须等到执行,使用 await 或 then 语法。
connectivity().then((value) {
print("value ${isoffline}");
});
答案 1 :(得分:2)
在您的代码中,connectivity();
方法是 async
,这意味着它需要一些时间才能完成。
现在当调用 init
方法时,它执行 connectivity();
然后立即执行 print("value${isoffline}");
现在 isoffline
的值最初是 null
,因此 {{1 }} 打印
解决方案是将 null
放在 print("value${isoffline}");
方法中,或者尝试将其添加到 connectivity();
方法之后。
build