Flutter网络速度检测插件speed_checker_plugin的使用
Flutter网络速度检测插件speed_checker_plugin的使用
免费速度测试功能供您自己的应用使用
SpeedChecker Flutter 插件允许开发者将速度测试功能集成到自己的 Flutter 应用程序中。您还可以尝试我们的应用程序 在 Google Play 和 App Store 上,它们由最新的 Speedchecker SDK 版本提供支持。更多关于 SpeedChecker SDKs 的信息。
功能
- 测试用户连接的延迟、下载和上传速度。
- 稳健地测量蜂窝网络、无线网络甚至本地网络。
- 测试细节如当前速度和进度。
- 额外的信息如网络类型和位置(见 FAQ 中的 KPI 列表)。
- 包含由 Speedchecker 提供和维护的高容量服务器或自定义服务器。
- 由 Speedchecker 提供的详细统计信息和报告。
平台支持
Android | iOS |
---|---|
支持 ✔️ | 支持 ✔️ |
要求
Android
- minSdkVersion 21
- 位置权限
默认情况下,Flutter 项目设置为 minSdkVersion 16。您需要将其更改为 21。您可以在以下文件中找到此设置:Your_project_folder/android/app/build.gradle
defaultConfig {
applicationId "com.example.test_project"
minSdkVersion flutter.minSdkVersion // 将 "flutter.minSdkVersion" 替换为 21
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
iOS
- Xcode 13.3.1 或更高版本
- Swift 5
- 开发目标 11.0 或更高版本
安装
1. 在终端运行:
$ flutter pub add speed_checker_plugin
这将在您的包的 pubspec.yaml
文件中添加如下行(并隐式运行 flutter pub get
):
dependencies:
speed_checker_plugin: ^1.0.24
2. 在您的 Dart 类中导入 speed_checker_plugin
import 'package:speed_checker_plugin/speed_checker_plugin.dart';
权限要求
免费版插件需要位置权限才能执行速度测试。您需要在应用程序级别处理位置权限。如果没有授予位置权限,应用程序将在 onError
方法中返回相应的消息,因此您需要在开始速度测试之前请求前台和后台位置权限。查看我们的 位置策略。
如果您是付费用户,应在开始测试之前设置许可证密钥。请联系我们,我们将为您提供应用程序的许可证密钥。
使用
1. 创建 SpeedCheckerPlugin
类的实例,监听事件的 StreamSubscription
对象,以及存储速度测试结果所需的变量
final _plugin = SpeedCheckerPlugin();
late StreamSubscription<SpeedTestResult> _subscription;
String _status = '';
int _ping = 0;
String _server = '';
String _connectionType = '';
double _currentSpeed = 0;
int _percent = 0;
double _downloadSpeed = 0;
double _uploadSpeed = 0;
String _ip = '';
String _isp = '';
2. 设置许可证密钥(适用于付费客户)
如果您有许可证密钥,可以在应用程序中添加该密钥作为字符串值:
_plugin.setAndroidLicenseKey('your_license_key');
_plugin.setIosLicenseKey('your_license_key');
许可证应在开始测试之前设置。确保您的软件包名称(对于 Android)或捆绑 ID(对于 iOS)与许可证协议中定义的一致。如果两个平台都有许可证,可以同时使用这两个方法。
3. 在您的类中启动 startSpeedTest
方法
您可以根据自定义事件(例如按钮点击)启动此方法:
_plugin.startSpeedTest();
插件支持使用自定义服务器启动速度测试:
_plugin.startSpeedTestWithServer(
const SpeedTestServer(
domain: 'dig20ny.speedcheckerapi.com',
downloadFolderPath: '/',
uploadFolderPath: '/',
city: 'New York 2',
country: 'USA',
countryCode: 'US',
id: 104
)
);
4. 监听 speedTestResultStream
。您也可以处理错误并相应地更新 UI。停止测试或接收到错误时,不要忘记取消订阅
_subscription = _plugin.speedTestResultStream.listen((result) {
setState(() {
_status = result.status;
_ping = result.ping;
_percent = result.percent;
_currentSpeed = result.currentSpeed;
_downloadSpeed = result.downloadSpeed;
_uploadSpeed = result.uploadSpeed;
_server = result.server;
_connectionType = result.connectionType;
_ip = result.ip;
_isp = result.isp;
// 如果您想在吐司消息中显示错误,请使用 Fluttertoast 库,或者以其他方式处理错误。
if(result.error.isNotEmpty) {
Fluttertoast.showToast(msg: result.error.toString());
}
});
}, onDone: () {
_subscription.cancel();
}, onError: (error) {
_status = error.toString();
_subscription.cancel();
});
5. 如果需要停止速度测试,可以调用插件的 stopTest
方法。它会立即中断速度测试
void stopTest() {
_plugin.stopTest();
_subscription = _plugin.speedTestResultStream.listen((result) {
setState(() {
_status = "Speed test stopped";
_ping = 0;
_percent = 0;
_currentSpeed = 0;
_downloadSpeed = 0;
_uploadSpeed = 0;
_server = '';
_connectionType = '';
_ip = '';
_isp = '';
});
}, onDone: () {
_subscription.cancel();
});
}
6. 不要忘记关闭流以防止内存泄漏。可以通过覆盖 dispose
方法来实现
[@override](/user/override)
void dispose() {
_plugin.dispose();
super.dispose();
}
更多关于Flutter网络速度检测插件speed_checker_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网络速度检测插件speed_checker_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用speed_checker_plugin
插件来检测网络速度的示例代码。
首先,确保你已经在pubspec.yaml
文件中添加了speed_checker_plugin
依赖:
dependencies:
flutter:
sdk: flutter
speed_checker_plugin: ^最新版本号 # 请替换为当前最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用speed_checker_plugin
:
- 导入插件:
在你的Dart文件中导入插件:
import 'package:speed_checker_plugin/speed_checker_plugin.dart';
- 检测网络速度:
你可以使用SpeedCheckerPlugin
类的checkDownloadSpeed
和checkUploadSpeed
方法来检测下载和上传速度。以下是一个完整的示例:
import 'package:flutter/material.dart';
import 'package:speed_checker_plugin/speed_checker_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String downloadSpeed = '';
String uploadSpeed = '';
bool isLoading = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Network Speed Checker'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Download Speed: $downloadSpeed',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Text(
'Upload Speed: $uploadSpeed',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 40),
ElevatedButton(
onPressed: () async {
setState(() {
isLoading = true;
downloadSpeed = 'Checking...';
uploadSpeed = 'Checking...';
});
try {
var downloadResult = await SpeedCheckerPlugin.checkDownloadSpeed();
var uploadResult = await SpeedCheckerPlugin.checkUploadSpeed();
setState(() {
downloadSpeed = '${downloadResult.speed.toStringAsFixed(2)} Mbps';
uploadSpeed = '${uploadResult.speed.toStringAsFixed(2)} Mbps';
isLoading = false;
});
} catch (e) {
setState(() {
downloadSpeed = 'Error';
uploadSpeed = 'Error';
isLoading = false;
});
print('Error checking speed: $e');
}
},
child: Text('Check Speed'),
style: ElevatedButton.styleFrom(
primary: isLoading ? Colors.grey : Colors.blue,
),
),
],
),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮来触发网络速度检测。当点击按钮时,应用会显示“Checking…”文本,并开始检测下载和上传速度。检测完成后,结果显示在屏幕上。
注意:
SpeedCheckerPlugin.checkDownloadSpeed()
和SpeedCheckerPlugin.checkUploadSpeed()
方法返回的是SpeedResult
对象,其中包含了速度等信息。- 在实际使用中,你可能需要根据插件的文档调整代码,以适应不同的API变化或需求。
希望这个示例对你有帮助!