Flutter连接管理插件connected的使用
Flutter连接管理插件connected的使用

CONNECTED
Are you sure you are connected?
这是一个用于检查您的互联网连接并将其结果显示在屏幕上的Flutter包!
此库通过检查到各种Uri
的可达性来提供监控和验证互联网连接的功能。它依赖于'internet_connection_checker_plus' => connectivity_plus
包来监听连接变化,并使用http
包进行网络请求。
功能
- 检查互联网连接状态
- 监听互联网连接变化并在屏幕上以小部件形式显示
- 可以自定义已连接和未连接的小部件
支持的平台
平台 | 检查连接 | 监听变化 |
---|---|---|
Android | ✅ | ✅ |
iOS | ✅ | ✅ |
macOS | ✅ | ✅ |
Linux | ✅ | ✅ |
Windows | ✅ | ✅ |
Web | ✅ | ✅ |
开始使用

Android
在您的AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
macOS
在您的macOS.entitlements
文件中添加以下权限:
<key>com.apple.security.network.client</key>
<true/>
有关更多信息,请参阅[Flutter联网文档]。
使用
1. 添加依赖
在您的pubspec.yaml
文件中添加internet_connection_checker_plus
包:
dependencies:
connected: [最新版本]
2. 导入包
在您的Dart文件中导入connected
包:
import 'package:connected/connected.dart';
3. 检查互联网连接状态
最简单的方法是使用NetworkService()
类:
Future<bool> get hasConnection async => await NetworkService().isConnected;
额外信息
4. 监听互联网连接变化
在MaterialApp的builder中包裹"widget":
child: MaterialApp(
navigatorKey: NavigationService.instance.navigationKey,
debugShowCheckedModeBanner: false,
builder: (context, widget) {
return Connected(widget: widget ?? MySizedBox.h0);
},
home: App(),
)
更多关于Flutter连接管理插件connected的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter连接管理插件connected的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
connected
是一个用于检测设备网络连接状态的 Flutter 插件。它可以帮助你监听设备的网络连接状态变化,并在应用中进行相应的处理。以下是关于如何使用 connected
插件的详细介绍。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 connected
插件的依赖:
dependencies:
flutter:
sdk: flutter
connected: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 connected
插件:
import 'package:connected/connected.dart';
3. 初始化 Connected
在使用 connected
之前,你需要初始化它。通常在 main
函数中进行初始化:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Connected.initialize();
runApp(MyApp());
}
4. 监听网络连接状态
你可以使用 Connected
的 onConnectivityChanged
流来监听网络连接状态的变化:
StreamSubscription<ConnectivityResult>? _subscription;
[@override](/user/override)
void initState() {
super.initState();
_subscription = Connected.onConnectivityChanged.listen((ConnectivityResult result) {
// 处理网络连接状态变化
if (result == ConnectivityResult.none) {
print('没有网络连接');
} else if (result == ConnectivityResult.mobile) {
print('使用移动数据');
} else if (result == ConnectivityResult.wifi) {
print('使用WiFi');
}
});
}
5. 获取当前网络连接状态
你也可以直接获取当前的网络连接状态:
ConnectivityResult result = await Connected.checkConnectivity();
if (result == ConnectivityResult.none) {
print('没有网络连接');
} else if (result == ConnectivityResult.mobile) {
print('使用移动数据');
} else if (result == ConnectivityResult.wifi) {
print('使用WiFi');
}
6. 取消监听
在不需要监听网络状态时,记得取消订阅以避免内存泄漏:
[@override](/user/override)
void dispose() {
_subscription?.cancel();
super.dispose();
}
7. 处理无网络连接的情况
你可以在应用启动时检查网络连接状态,并在没有网络连接时显示相应的提示:
void checkConnectivity() async {
ConnectivityResult result = await Connected.checkConnectivity();
if (result == ConnectivityResult.none) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('无网络连接'),
content: Text('请检查您的网络连接'),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text('确定'),
),
],
),
);
}
}
8. 完整示例
以下是一个完整的示例,展示了如何使用 connected
插件来监听和处理网络连接状态:
import 'package:flutter/material.dart';
import 'package:connected/connected.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Connected.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Connected Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ConnectivityExample(),
);
}
}
class ConnectivityExample extends StatefulWidget {
[@override](/user/override)
_ConnectivityExampleState createState() => _ConnectivityExampleState();
}
class _ConnectivityExampleState extends State<ConnectivityExample> {
StreamSubscription<ConnectivityResult>? _subscription;
String _connectionStatus = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
_subscription = Connected.onConnectivityChanged.listen((ConnectivityResult result) {
setState(() {
_connectionStatus = result.toString();
});
});
}
[@override](/user/override)
void dispose() {
_subscription?.cancel();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Connected Example'),
),
body: Center(
child: Text('Connection Status: $_connectionStatus'),
),
);
}
}