HttpRange class

Represents an HTTP Range as defined in RFC 7233.
This class handles parsing, validation, and formatting of HTTP Range headers, supporting byte ranges for partial content (HTTP 206 Partial Content responses).

Features

  • Stores a single byte range with inclusive start and end positions.
  • Validates that ranges are non-negative and that end >= start.
  • Provides utilities to parse and format HTTP Range headers.
  • Supports suffix ranges (e.g., bytes=-512) and multiple ranges in one header.
  • Can merge overlapping or adjacent ranges into consolidated ranges.

Example

final range = HttpRange(start: 0, end: 1023);
print(range.getLength()); // 1024
print(range.getContentRange(5000)); // 'bytes 0-1023/5000'

final ranges = HttpRange.parseRangeHeader('bytes=0-1023,2048-4095', 5000);
final merged = HttpRange.merge(ranges);

Constructors

HttpRange({required int start, required int end})
Creates a new HttpRange with the given start and end byte positions.

Properties

end int
The end byte position (inclusive). Must be >= start.
final
hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
start int
The start byte position (inclusive). Must be >= 0.
final

Methods

equalizedProperties() List<Object?>
Mixin-style contract for value-based equality, hashCode, and toString.
getContentRange(int contentLength) String
Returns the Content-Range header value for this range.
getEnd() int
Returns the end of this range (inclusive).
getLength() int
Returns the length of this range in bytes.
getStart() int
Returns the start of this range (inclusive).
isValid(int contentLength) bool
Checks if this range is valid for the given contentLength.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

formatRangeHeader(List<HttpRange> ranges) String
Converts a list of HttpRange objects to an HTTP Range header value.
merge(List<HttpRange> ranges) List<HttpRange>
Merges overlapping or adjacent ranges into a consolidated list.
parse(String? value) List<HttpRange>
Parses a Range header string into a list of HttpRange.
parseRangeHeader(String rangeHeader, int contentLength) List<HttpRange>
Parses an HTTP Range header value and returns a list of HttpRange objects.
parseRanges(String rangeHeader, int contentLength) List<HttpRange>
Alias for parseRangeHeader. Parses a range header string into a list of HttpRange.
toHeader(List<HttpRange> ranges) String
Alias for formatRangeHeader. Converts a list of ranges into a valid Range header string.