flutter_quic library
A Flutter plugin for QUIC protocol support using Quinn Rust library.
This library provides a complete wrapper around the Quinn QUIC implementation, exposing both Core API (direct 1:1 Quinn mapping) and Convenience API (simplified wrappers for common use cases).
Core API
Direct mapping to Quinn's API surface:
- QuicEndpoint: QUIC endpoint management
- QuicConnection: Connection handling
- QuicSendStream/QuicRecvStream: Stream operations
Convenience API
Simplified wrappers built on Core API:
- QuicClient: High-level client operations
- Connection pooling and automatic retry logic
Classes
- QuicClient
- QuicClientConfig
- Configuration for QuicClient
- QuicConnection
- QuicConnectionStats
- Connection statistics from Quinn
- QuicEndpoint
- QuicFrameStats
- Frame transmission/reception statistics
- QuicPathStats
- Path-specific statistics
- QuicRecvStream
- QuicSendStream
- QuicUdpStats
- UDP-level statistics
- RustLib
- Main entrypoint of the Rust API
Extensions
- QuicDatagramExceptionPatterns on QuicDatagramException
- Adds pattern-matching-related methods to QuicDatagramException.
- QuicErrorPatterns on QuicError
- Adds pattern-matching-related methods to QuicError.
- QuicReadExceptionPatterns on QuicReadException
- Adds pattern-matching-related methods to QuicReadException.
- QuicReadToEndExceptionPatterns on QuicReadToEndException
- Adds pattern-matching-related methods to QuicReadToEndException.
- QuicWriteExceptionPatterns on QuicWriteException
- Adds pattern-matching-related methods to QuicWriteException.
Functions
-
connectionCloseReason(
{required QuicConnection connection}) → Future< (QuicConnection, String?)> - Get the close reason of a QUIC connection This exposes the QuicConnection.close_reason() method to flutter_rust_bridge
-
connectionDatagramSendBufferSpace(
{required QuicConnection connection}) → Future< (QuicConnection, BigInt)> - Get datagram send buffer space This exposes the QuicConnection.datagram_send_buffer_space() method to flutter_rust_bridge
-
connectionLocalIp(
{required QuicConnection connection}) → Future< (QuicConnection, String?)> - Get the local IP address of a QUIC connection This exposes the QuicConnection.local_ip() method to flutter_rust_bridge
-
connectionMaxDatagramSize(
{required QuicConnection connection}) → Future< (QuicConnection, BigInt?)> - Get maximum datagram size This exposes the QuicConnection.max_datagram_size() method to flutter_rust_bridge
-
connectionOpenBi(
{required QuicConnection connection}) → Future< (QuicConnection, QuicSendStream, QuicRecvStream)> - Open a bidirectional stream on a QUIC connection This exposes the QuicConnection.open_bi() method to flutter_rust_bridge
-
connectionOpenUni(
{required QuicConnection connection}) → Future< (QuicConnection, QuicSendStream)> - Open a unidirectional stream on a QUIC connection This exposes the QuicConnection.open_uni() method to flutter_rust_bridge
-
connectionReadDatagram(
{required QuicConnection connection}) → Future< (QuicConnection, Uint8List?)> - Read a datagram from a QUIC connection This exposes the QuicConnection.read_datagram() method to flutter_rust_bridge
-
connectionRemoteAddress(
{required QuicConnection connection}) → Future< (QuicConnection, SocketAddress)> - Get the remote address of a QUIC connection This exposes the QuicConnection.remote_address() method to flutter_rust_bridge
-
connectionRttMillis(
{required QuicConnection connection}) → Future< (QuicConnection, BigInt)> - Get the RTT of a QUIC connection in milliseconds This exposes the QuicConnection.rtt() method to flutter_rust_bridge
-
connectionSendDatagram(
{required QuicConnection connection, required List< int> data}) → Future<QuicConnection> - Send a datagram on a QUIC connection This exposes the QuicConnection.send_datagram() method to flutter_rust_bridge
-
connectionSendDatagramWait(
{required QuicConnection connection, required List< int> data}) → Future<QuicConnection> - Send a datagram with backpressure on a QUIC connection This exposes the QuicConnection.send_datagram_wait() method to flutter_rust_bridge
-
connectionStableId(
{required QuicConnection connection}) → Future< (QuicConnection, BigInt)> - Get the stable ID of a QUIC connection This exposes the QuicConnection.stable_id() method to flutter_rust_bridge
-
connectionStats(
{required QuicConnection connection}) → Future< (QuicConnection, QuicConnectionStats)> - Get the statistics of a QUIC connection This exposes the QuicConnection.stats() method to flutter_rust_bridge
-
createClientEndpoint(
) → Future< QuicEndpoint> - Create a new QUIC client endpoint
-
createServerEndpoint(
{required QuicServerConfig config, required String addr}) → Future< QuicEndpoint> - Create a new QUIC server endpoint
-
endpointConfigNew(
) → Future< QuicEndpointConfig> - Create a new endpoint config
-
endpointConnect(
{required QuicEndpoint endpoint, required String addr, required String serverName}) → Future< (QuicEndpoint, QuicConnection)> - Connect to a server using a QUIC endpoint This exposes the QuicEndpoint.connect() method to flutter_rust_bridge
-
exposeConnectionType(
{required QuicConnection connection}) → Future< QuicConnection> -
exposeQuicClientConfigType(
{required QuicClientConfig config}) → Future< QuicClientConfig> -
exposeQuicClientType(
{required QuicClient client}) → Future< QuicClient> - Expose QuicClient and QuicClientConfig types for flutter_rust_bridge
-
exposeRecvStreamType(
{required QuicRecvStream stream}) → Future< QuicRecvStream> -
exposeSendStreamType(
{required QuicSendStream stream}) → Future< QuicSendStream> -
exposeTypesForFrbGeneration(
) → Future< void> -
quicClientClearPool(
{required QuicClient client}) → Future< QuicClient> - Clear QuicClient connection pool
-
quicClientConfig(
{required QuicClient client}) → Future< (QuicClient, QuicClientConfig)> - Get QuicClient configuration
-
quicClientConfigNew(
) → Future< QuicClientConfig> - Create a new QuicClientConfig with default values
-
quicClientCreate(
) → Future< QuicClient> - Create a new QuicClient with default configuration
-
quicClientCreateWithConfig(
{required QuicClientConfig config}) → Future< QuicClient> - Create a new QuicClient with custom configuration
-
quicClientGet(
{required QuicClient client, required String url}) → Future< (QuicClient, String)> - Send a GET request using QuicClient
-
quicClientGetWithTimeout(
{required QuicClient client, required String url}) → Future< (QuicClient, String)> - Send a GET request with timeout using QuicClient
-
quicClientPost(
{required QuicClient client, required String url, required String data}) → Future< (QuicClient, String)> - Send a POST request using QuicClient
-
quicClientPostWithTimeout(
{required QuicClient client, required String url, required String data}) → Future< (QuicClient, String)> - Send a POST request with timeout using QuicClient
-
quicClientSend(
{required QuicClient client, required String url, required String data}) → Future< (QuicClient, String)> - Send data using QuicClient and return response
-
quicClientSendWithTimeout(
{required QuicClient client, required String url, required String data}) → Future< (QuicClient, String)> - Send data with timeout using QuicClient
-
recvStreamRead(
{required QuicRecvStream stream, required BigInt maxLength}) → Future< (QuicRecvStream, Uint8List?)> - Read data from a QUIC recv stream This exposes the QuicRecvStream.read() method to flutter_rust_bridge
-
recvStreamReadToEnd(
{required QuicRecvStream stream, required BigInt maxLength}) → Future< (QuicRecvStream, Uint8List)> - Read all remaining data from a QUIC recv stream This exposes the QuicRecvStream.read_to_end() method to flutter_rust_bridge
-
sendStreamFinish(
{required QuicSendStream stream}) → Future< QuicSendStream> - Finish a QUIC send stream This exposes the QuicSendStream.finish() method to flutter_rust_bridge
-
sendStreamWrite(
{required QuicSendStream stream, required List< int> data}) → Future<(QuicSendStream, BigInt)> - Write data to a QUIC send stream This exposes the QuicSendStream.write() method to flutter_rust_bridge
-
sendStreamWriteAll(
{required QuicSendStream stream, required List< int> data}) → Future<QuicSendStream> - Write all data to a QUIC send stream This exposes the QuicSendStream.write_all() method to flutter_rust_bridge
-
serverConfigWithSingleCert(
{required List< Uint8List> certChain, required List<int> key}) → Future<QuicServerConfig> - Create a new server config with single certificate
-
transportConfigNew(
) → Future< QuicTransportConfig> - Create a new transport config