我们使用 connectivity 这个插件来监测网络。
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
class ConnectivityPage extends StatefulWidget {
ConnectivityPage({Key key}) : super(key: key);
_ConnectivityPageState createState() => _ConnectivityPageState();
}
class _ConnectivityPageState extends State<ConnectivityPage> {
//网络状态描述
String _connectStateDescription;
var subscription;
@override
void initState() {
super.initState();
//监测网络变化
subscription = Connectivity()
.onConnectivityChanged
.listen((ConnectivityResult result) {
if (result == ConnectivityResult.mobile) {
setState(() {
_connectStateDescription = "手机网络";
});
} else if (result == ConnectivityResult.wifi) {
setState(() {
_connectStateDescription = "Wifi网络";
});
} else {
setState(() {
_connectStateDescription = "无网络";
});
}
print(_connectStateDescription);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("监测网络")),
body: Center(
// 显示网络状态
child: Text("$_connectStateDescription"),
),
);
}
@override
void dispose() {
super.dispose();
//在页面销毁的时候一定要取消网络状态的监听
subscription.cancle();
}
}
效果如下:
以上。