在Flutter中使用connectivity_plus插件检测网络状态的步骤如下:
1. 添加依赖
在 pubspec.yaml 文件中添加依赖:
dependencies:
connectivity_plus: ^5.0.1
运行 flutter pub get 安装。
2. 基本使用
import 'package:connectivity_plus/connectivity_plus.dart';
// 检查当前网络状态
Future<void> checkConnectivity() async {
final connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult == ConnectivityResult.mobile) {
print('移动网络');
} else if (connectivityResult == ConnectivityResult.wifi) {
print('WiFi网络');
} else if (connectivityResult == ConnectivityResult.none) {
print('无网络');
}
}
3. 监听网络状态变化
import 'package:flutter/material.dart';
class NetworkStatusWidget extends StatefulWidget {
@override
_NetworkStatusWidgetState createState() => _NetworkStatusWidgetState();
}
class _NetworkStatusWidgetState extends State<NetworkStatusWidget> {
late StreamSubscription<ConnectivityResult> _subscription;
@override
void initState() {
super.initState();
// 监听网络状态变化
_subscription = Connectivity().onConnectivityChanged.listen((result) {
setState(() {
// 更新UI显示当前网络状态
});
});
}
@override
void dispose() {
_subscription.cancel(); // 取消监听
super.dispose();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<ConnectivityResult>(
future: Connectivity().checkConnectivity(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final status = snapshot.data!;
return Text('网络状态: ${_getStatusText(status)}');
}
return Text('检测中...');
},
);
}
String _getStatusText(ConnectivityResult result) {
switch (result) {
case ConnectivityResult.mobile:
return '移动网络';
case ConnectivityResult.wifi:
return 'WiFi';
case ConnectivityResult.none:
return '无网络';
default:
return '未知';
}
}
}
4. 注意事项
5. 完整示例
// 在main.dart中使用
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('网络状态检测')),
body: Center(child: NetworkStatusWidget()),
),
);
}
}
通过以上步骤,你可以检测和监听设备的网络状态变化,并根据需要更新UI。