Skip to main content

flutter_cloudflare_dns 0.3.0 copy "flutter_cloudflare_dns: ^0.3.0" to clipboard
flutter_cloudflare_dns: ^0.3.0 copied to clipboard

Flutter toolkit for diagnosing and managing Cloudflare DNS: DoH health checks, safe API gateways, and Material 3 widgets.

0.3.0 #

Breaking:

  • Proxied records whose TTL is not automatic (1) fail validation with proxied_ttl, and TTLs above 86,400 seconds with invalid_ttl. Cloudflare always uses automatic TTL for proxied records.
  • DnsDiagnostics.lookup returns only answers of the queried type; a CNAME the resolver followed is in DnsDiagnostics.resolve's cnames. Answers of types this package does not support, such as RRSIG and DNAME, are dropped.
  • DnsDiagnostics.compareResolvers lists a resolver that answers NXDOMAIN in the new DnsResolverComparison.nxdomainResolvers instead of failedResolvers, so two resolvers that both say the name is gone are consistent.
  • DnsZoneFile.parse gives proxied records automatic TTL and reads the trailing comment into comment and tags.

Added and changed:

  • DnsRecord.copyWith takes clear, a set of DnsRecordFields to reset to null, for example copyWith(clear: {DnsRecordField.comment}). Other arguments keep their meaning: null or omitted keeps the old value.
  • DnsRecordPolicy sets plan limits for validation: TTLs of 60 to 86,400 seconds by default, 30 with DnsRecordPolicy.enterprise. Pass it as policy to DnsRecordValidator.validate, as recordPolicy to both gateways and the dashboard, and as policy to the editor and import sheets.
  • Validate TXT content against Cloudflare's 4,096-byte record limit (txt_too_long) and HTTPS/SVCB parameters against RFC 9460 (invalid_svc_params, DnsRecordValidator.svcParamsError).
  • Accept null MX records (0 ., RFC 7505) and SRV targets of . with port 0.
  • DnsRecordValidator.validateZone and validateInZone check rules across records: a CNAME next to other records with the same name (cname_conflict), identical records (duplicate_record), a null MX beside other MX records (null_mx_conflict), record sets over 8,192 characters (record_set_too_long), and apex CNAMEs (cname_flattened, info). The editor (new existingRecords parameter) and the import preview use them.
  • Internationalized names: DnsName.toAscii and DnsName.toUnicode convert between Unicode and Punycode. Names and targets are validated, sent, and exported in Punycode, and the record list shows them in Unicode.
  • Zone files carry record comments and tags in Cloudflare's ; comment cf_tags=a,b:c form, both ways.
  • DnsDiagnostics.resolve returns a DnsLookupResult with the answers, the CNAME chain, NXDOMAIN, and the DNSSEC AD flag. DnsResolverComparison.cnames shows the chain per resolver.
  • DnsHealthReport.dnssecValidated reports whether every lookup was DNSSEC-validated, and the health card shows it.
  • watchPropagation(record, removal: true) waits for a deleted record to disappear, using the new DnsResolverComparison.lacks. The dashboard watches deleted DNS-only records and lists them under "Deleted records".
  • The dashboard imports zone files in batches of importBatchSize (200, Cloudflare's Free plan limit) and lists every record that was not created with the reason. Imports split into several batches are not atomic.
  • The editor locks TTL to automatic while the Cloudflare proxy is on.
  • Retry-After given as an HTTP date is honored.
  • MX records without a priority no longer send "priority": null.
  • Right-to-left layouts: padding, alignment, corners, and the add button follow the text direction.
  • Fix the health card header and long record labels overflowing with large text.
  • CI runs the tests on macOS, Windows, and Chrome too, and widget tests cover RTL, text scale 2, and dark mode.

0.2.1 #

  • Fix long TXT values such as DKIM keys never matching across resolvers. Cloudflare answers with several quoted strings and Google with the joined value; health checks, compareResolvers, and watchPropagation now compare the joined value, so these records no longer stay "Propagating" or report content_mismatch.
  • Fix TXT values and CAA iodef URLs being compared without case. Only host names and CAA issuer domains ignore case now, and IPv6 addresses compare by value (2001:DB8::1 matches 2001:db8:0:0:0:0:0:1).
  • Fix requests that never answer hanging forever. DoH lookups and gateway requests time out after requestTimeout (10 seconds by default, a new option on DnsDiagnostics, DirectCloudflareGateway, and ProxyCloudflareGateway), and watchPropagation closes at timeout even while a lookup is still running.
  • Fix wildcard records (*.example.com) failing validation and zone file import.
  • Fix clearing all tags through ProxyCloudflareGateway (PATCH) and batch patches: writes now always send tags, empty or not.
  • Fix the dashboard sending one DoH request per record at once. Lookups run at most maxConcurrentLookups (8) at a time, and the automatic health check covers at most maxHealthCheckRecords (100) records, apex first, with a check_limited info issue for larger zones.
  • Fix the zone picker overflowing with many zones. It scrolls, and shows a search field above eight zones.
  • Fix A and AAAA validation accepting +1.2.3.4, 01.2.3.4, and ::::: and rejecting ::ffff:1.2.3.4; addresses are now parsed.
  • Fix zone file export splitting non-ASCII TXT values by characters, which produced strings over the 255-byte limit. They are split by UTF-8 bytes.
  • Fix zone file \DDD escapes not decoding as UTF-8, so \240\159\152\128 reads as 😀.
  • Fix an apex CNAME always failing the health check and propagation tracking. Cloudflare flattens it, so it is reported as cname_flattened (info) and not tracked.
  • Fix slow rendering of large zones. DnsRecordList builds only visible tiles when its height is bounded, the new DnsRecordList.sliver does the same in a CustomScrollView, and the dashboard uses it. Dashboard search waits 250 ms after typing.
  • Fix DnsRecord.fromJson throwing a TypeError when a proxy sends proxied or a number as a string. Such values are accepted; anything else is a FormatException, which gateways report as a CloudflareDnsException with code invalid_record.

0.2.0 #

Breaking: DnsRecordType gains https, svcb, and ptr. Exhaustive switch statements over the enum need the new cases.

  • Add HTTPS, SVCB, and PTR records to the model, validator, DoH diagnostics, record list, editor sheet, dashboard filters, and zone files. HTTPS and SVCB records carry priority, target, and svcParams; see DnsRecord.https and DnsRecord.svcb.
  • Export and import BIND zone files with DnsZoneFile.encode and DnsZoneFile.parse, compatible with Cloudflare's DNS export. The dashboard's zone file menu copies the zone or imports a pasted file through DnsZoneImportSheet, which previews validation errors and skips existing records.
  • Watch a change propagate with DnsDiagnostics.watchPropagation and DnsResolverComparison.matches. The dashboard tracks every saved record that is not proxied and shows its state in DnsRecordList through the new propagation map (DnsPropagationStatus).
  • Add BatchCapableGateway with batch, implemented by DirectCloudflareGateway (Cloudflare's dns_records/batch) and ProxyCloudflareGateway (POST /dns-records/batch?zoneId=...). Zone file imports use it when available. CloudflareDnsGateway is unchanged.
  • README: link the related rdap, mail_dns_check, and tls_inspector packages.

0.1.2 #

  • Search records by name or value from the dashboard.
  • Compare public answers from Cloudflare and Google DNS-over-HTTPS resolvers with DnsDiagnostics.compareResolvers and the dashboard's "Compare resolvers" sheet to see whether a change has propagated.
  • Copy a record value or duplicate a record from the record menu. The editor treats a record without an id as a new record.
  • Retry Cloudflare API requests that return HTTP 429, honoring Retry-After.
  • Replace the minecraft pub.dev topic with material-design and ui.

0.1.1 #

  • Fix CloudflareDnsDashboard creating a new HTTP client for every health check without closing it. It now reuses one and closes it on dispose.
  • Add close() to DnsDiagnostics, DirectCloudflareGateway, and ProxyCloudflareGateway. Only clients they created are closed.
  • Edit record comments and tags in the editor sheet. Clearing a comment now sends an empty value so proxies using PATCH remove it.
  • Validate Cloudflare limits: comments up to 500 characters, up to 20 tags, tag names of letters, digits, -, or _ up to 32 characters, values up to 100 characters.
  • Publish releases to pub.dev from GitHub Actions when a v* tag is pushed.

0.1.0 #

Breaking: DnsRecordType gains mx, caa, and ns. Exhaustive switch statements over the enum need the new cases.

  • Fix zone and record listing silently stopping after the first page. Both gateways now follow result_info.total_pages; proxies that return a bare list keep working.
  • Add MX, CAA, and NS records to the model, validator, DoH diagnostics, record list, editor sheet, and dashboard filters.
  • Add Cloudflare record tags, preserved when editing a record.
  • Accept @ for the zone apex and underscore labels such as _dmarc for TXT and CNAME names.
  • Declare iOS, web, Windows, macOS, and Linux support. DirectCloudflareGateway cannot call the Cloudflare API from web browsers because of CORS; use the proxy gateway there.
  • Keep the record type selector usable on narrow screens by scrolling instead of shrinking buttons.
  • Document the remaining public REST gateway members and the library.
  • Lower the Dart SDK constraint to ^3.12.0 so the documented Flutter 3.44.0 minimum (which ships Dart 3.12.0) can actually resolve the package.
  • Require http 1.6.0 and verify against Flutter 3.47.
  • Add GitHub Actions CI for formatting, analysis, tests, pana, and example builds.

0.0.5 #

  • Expand the two-panel demo to 1920x2160 so both Android screens remain full height.
  • Keep the complete status bar, editor form, live preview, and save controls visible.
  • Publish a matching 960x1080 animated WebP for GitHub and pub.dev.

0.0.4 #

  • Rebuild the demo as a space-efficient two-panel 1920x1080 Android presentation.
  • Preserve real dashboard, editor, scrolling, and health-check animations.
  • Upgrade the pub.dev animation to 960x540 at 12 fps while staying below the image limit.
  • Correct label and chip text alignment throughout the package artwork.

0.0.3 #

  • Replace the package hero and screenshot gallery with polished high-resolution artwork.
  • Upgrade the Android demo to a crisp 1080x2340, 30 fps presentation.
  • Use absolute GitHub media URLs so README visuals render reliably on pub.dev.

0.0.2 #

  • Add branded package artwork and an animated Android demo.
  • Link the public GitHub repository and issue tracker.
  • Refresh the package screenshots with real Android UI.

0.0.1 #

  • Add Cloudflare DoH diagnostics for A, AAAA, CNAME, TXT, and SRV records.
  • Add direct and backend-proxy Cloudflare DNS gateways.
  • Add a Material 3 DNS dashboard, health card, record list, and editor.
  • Add safe SRV editing for services such as Minecraft Java Edition.
  • Declare Android as the officially supported platform for the initial release.
1
likes
160
points
399
downloads
screenshot

Documentation

API reference

Publisher

verified publisherseungpyo.online

Weekly Downloads

Flutter toolkit for diagnosing and managing Cloudflare DNS: DoH health checks, safe API gateways, and Material 3 widgets.

Homepage
Repository (GitHub)
View/report issues

Topics

#cloudflare #dns #networking #material-design #ui

License

MIT (license)

Dependencies

flutter, http, http_parser

More

Packages that depend on flutter_cloudflare_dns