universal_io 0.1.0 universal_io: ^0.1.0 copied to clipboard
Supports a subset of 'dart:io' in all platforms, including the browser.
Introduction #
A Dart package that supports a subset of dart:io in all platforms, including the browser (where it normally doesn't work).
Typically you just import "package:universal_io/io.dart" (instead of "dart:io"):
- In the Dart VM and Flutter, the library exports dart:io.
- In browser: the library exports its own, compatible classes.
Licensed under the MIT License. A lot of the source code was adopted from the original 'dart:io' in Dart SDK, which was licensed under a BSD-style license.
Features #
- Platform information
- Operating system, locale, terminal, etc.
- HTTP client
- In browser, the connection to the server is established only after you have committed request
body by calling
HttpClientRequest
methodclose()
.
- In browser, the connection to the server is established only after you have committed request
body by calling
- File access
- In browser, access to all directories and files is denied.
- Sockets
- In browser, all methods throw UnimplementedError.
Getting started #
Add dependency #
In pubspec.yaml
:
dependencies:
universal_io: ^0.1.0
Override behavior #
import 'dart:async';
import 'package:universal_io/io.dart';
import 'package:universal_io/io_driver.dart';
void main() async {
// Set IO driver
IODriver.zoneLocal.defaultValue = new MyDriver();
// Do something
final socket = await Socket.connect("google.com", 80);
socket.close();
}
class MyDriver extends IODriver {
@override
Future<Socket> connectSocket(host, int port,
{sourceAddress, Duration timeout}) {
print("Attempting to connect to '$host:$port'");
return super.connectSocket(host, port);
}
}