flutter_network_speed_test
A Flutter library to test network speed, including download, upload, and ping tests. Provides real-time progress and results for each test type.
Features
- Measure download speed.
- Measure upload speed.
- Measure ping latency.
- Real-time progress updates.
Installation
Add the package to your pubspec.yaml:
dependencies:
flutter_network_speed_test: ^latest_version
Then run:
flutter pub get
Usage
- Wrap Your App with
SpeedTestProvider
Wrap the part of your app where you need access to the speed test
functionality in a SpeedTestProvider.
import 'package:flutter_network_speed_test/flutter_network_speed_test.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SpeedTestProvider(
args: const SpeedTestArgs(duration: Duration(seconds: 10)),
child: MaterialApp(
home: SpeedTestScreen(),
),
);
}
}
- Access
SpeedTestProvider
Retrieve the SpeedTestProvider state using:
final speedTest = SpeedTestProvider.of(context);
- Start test
speedTest.startTest();
- Monitor Progress
Use a StreamBuilder to display real-time test progress.
StreamBuilder<ProgressData>(
stream: speedTest.progressStream,
builder: (context, snapshot) {
if (snapshot.hasData) {
final data = snapshot.data!;
return Text('${data.type.name}: ${data.speed.toStringAsFixed(2)} Mbps');
}
return Text('Press start to begin the test.');
},
);
- Display Results
Access test results after completion.
final downloadSpeed = speedTest.results[SpeedTestType.download];
final uploadSpeed = speedTest.results[SpeedTestType.upload];
final ping = speedTest.results[SpeedTestType.ping];
Text('Download: ${downloadSpeed.toStringAsFixed(2)} Mbps');
Text('Upload: ${uploadSpeed.toStringAsFixed(2)} Mbps');
Text('Ping: ${ping.toStringAsFixed(2)} ms');
Libraries
- flutter_network_speed_test
- A library for testing internet speed.