http2 2.0.1 copy "http2: ^2.0.1" to clipboard
http2: ^2.0.1 copied to clipboard

A HTTP/2 implementation in Dart.

Dart CI pub package package publisher

This library provides an http/2 interface on top of a bidirectional stream of bytes.

Usage #

Here is a minimal example of connecting to a http/2 capable server, requesting a resource and iterating over the response.

import 'dart:convert';
import 'dart:io';

import 'package:http2/http2.dart';

main() async {
  var uri = Uri.parse('');

  var transport = new ClientTransportConnection.viaSocket(
    await SecureSocket.connect(,
      supportedProtocols: ['h2'],

  var stream = transport.makeRequest(
      new Header.ascii(':method', 'GET'),
      new Header.ascii(':path', uri.path),
      new Header.ascii(':scheme', uri.scheme),
      new Header.ascii(':authority',,
    endStream: true,

  await for (var message in stream.incomingMessages) {
    if (message is HeadersStreamMessage) {
      for (var header in message.headers) {
        var name = utf8.decode(;
        var value = utf8.decode(header.value);
        print('Header: $name: $value');
    } else if (message is DataStreamMessage) {
      // Use [message.bytes] (but respect 'content-encoding' header)
  await transport.finish();

An example with better error handling is available here.

See the API docs for more details.

Features and bugs #

Please file feature requests and bugs at the issue tracker.