Flutter网络速度检测插件speed_checker_plugin的使用

Flutter网络速度检测插件speed_checker_plugin的使用

pub package

免费速度测试功能供您自己的应用使用

SpeedChecker Flutter 插件允许开发者将速度测试功能集成到自己的 Flutter 应用程序中。您还可以尝试我们的应用程序 在 Google PlayApp 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

1 回复

更多关于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

  1. 导入插件

在你的Dart文件中导入插件:

import 'package:speed_checker_plugin/speed_checker_plugin.dart';
  1. 检测网络速度

你可以使用SpeedCheckerPlugin类的checkDownloadSpeedcheckUploadSpeed方法来检测下载和上传速度。以下是一个完整的示例:

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变化或需求。

希望这个示例对你有帮助!

回到顶部