Experimental Cronet Dart bindings
This package binds to Cronet’s native API to expose them in Dart.
Supported Platforms
Currently, 64 bit Android and Desktop Platforms (Linux, Windows and MacOS) are supported.
Requirements
- Dart SDK 2.12.0 or above.
- CMake 3.10 or above. (If on windows, Visual Studio 2019 with C++ tools)
- C++ compiler. (g++/clang/msvc)
- Android NDK if targeting Android.
Usage
- Add package as a dependency in your
pubspec.yaml
. - Run this from the
root
of your project.flutter pub get flutter pub run cronet:setup # Downloads the cronet binaries.We need to useflutter pub
even if we want to use it with Dart CLI. See https://github.com/dart-lang/pub/issues/2606 for further details.*Note for Android: Remember to Add the following permissions inAndroidManifest.xml
file. <uses-permission android:name=”android.permission.INTERNET” /> <uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />Optionally, enable cleartext traffic by addingandroid:usesCleartextTraffic="true"
toAndroidManifest.xml
file. - Importimport ‘package:cronet/cronet.dart’;
Note: Internet connection is required to download cronet binaries.
Example
final client = HttpClient(); client .getUrl(Uri.parse('http://info.cern.ch/')) .then((HttpClientRequest request) { return request.close(); }).then((HttpClientResponse response) { response.transform(utf8.decoder).listen((contents) { print(contents); }, onDone: () => print( 'Done!')); });
See the API comparison with dart:io
.
Run Example
Flutter
cd example/flutter flutter pub get flutter pub run cronet:setup # Downloads the cronet binaries. flutter run
Dart CLI
cd example/cli flutter pub get flutter pub run cronet:setup # Downloads the cronet binaries. dart run bin/example_dart.dart
Run Tests
flutter pub get flutter pub run cronet:setup # Downloads the cronet binaries. flutter test
You can also verify your cronet binaries using dart run cronet:setup verify
. Make sure to have cmake 3.10
.
Benchmarking
See benchmark summary and extensive reports for comparison with dart:io
.
flutter pub get flutter pub run cronet:setup # Downloads the cronet binaries. dart run benchmark/latency.dart # For sequential requests benchmark. dart run benchmark/throughput.dart # For parallel requests benchmark. dart run benchmark/run_all.dart # To run all the benchmarks and get reports.
Use -h
to see available cli arguments and usage informations.
To know how to setup local test servers, read benchmarking guide.
Note: Test results may get affected by: https://github.com/google/cronet.dart/issues/11.
Building Your Own
- Make sure you’ve downloaded your custom version of cronet shared library and filename follows the pattern
cronet.86.0.4240.198.<extension>
with a prefixlib
if onlinux
. Else, you can build cronet from source using the provided instuctions. Then copy the library to the designated folder. For linux, the files are under.dart_tool/cronet/linux64
. - Run
dart run cronet:setup build
from the root of your project.
Note for Windows: Run step 2
from x64 Native Tools Command Prompt for VS 2019
shell.
Note for Android: Copy the produced jar files in android/libs
and .so
files in android/src/main/jniLibs
subdirectory from the root of this package.
Contribute on GitHub
https://github.com/google/cronet.dart
Provides the list of the opensource Flutter apps collection with GitHub repository.