configwire_flutter 0.2.0
configwire_flutter: ^0.2.0 copied to clipboard
Flutter companion for the ConfigWire client with SharedPreferences cache and device targeting.
0.2.0 #
- Breaking: fetch identity is now userHash-only (via
configwire ^0.3.0:Targeting.toQueryParametersemits?userHash=<sha256Hex16(userId)>). Rawuidis never sent: no?uid=emission and no dual-send (hash-only by design). Migration: no client code change needed unless you depended on?uid=server-side — key rules offUserHashinstead. Supported server:configwire ^0.1.9or later (dual-accept window): upgrade the server first; older servers (<0.1.9) will treat these fetches as anonymous. Floor bumped toconfigwire: ^0.3.0.
0.1.2 #
- Example app (
example/): flag-gated UI driving real widgets fromwelcome_message(String) andnew_checkout(Bool) flags with in-app defaults,connectRealtime/onUpdatelive rebuild without manual fetch,trackExposureat the flag-driven branches, plus a debug panel (fetch status, version, etag, targeting) and an admin-themed shell (config_wire_screen,init_gate,cw_theme,widgets). Platform shells for android, ios, linux, macos, windows, and web soflutter runworks on every target. No library changes.
0.1.1 #
- WASM compatibility: read the app version via
package_info_plus_platform_interfaceinstead ofpackage:package_info_plus/package_info_plus.dart(which unconditionally exports itsdart:ioLinux implementation and cost 10 pub.dev platform points). Runtime behavior is unchanged — thepackage_info_plusplugin still provides the platform implementations. - Factory hardening (
ConfigWireFlutter.createConfigWirenever throws): a throwingidGeneratordegrades to anonymous (pins nothing instead of propagating);collectDevice: falsedefensive-copiescustomAttrsto match thetruepath; device targeting trimsappVersionbefore the+buildstrip.
0.1.0 #
SharedPreferencesCacheStore:SharedPreferencesAsync-backedCacheStorewith per-env key; blocked storage degrades to load-null/save-noop and never throws.- Device targeting collector: platform, build-stripped appVersion, locale/country; customAttrs from explicit input.
- Stable install ID: a 15-char lowercase
[a-z0-9]ID (defaultdefaultIdGenerator) is persisted and sent as?userHash=(sha256Hex16 of the ID) with each fetch. PassidGeneratorto supply the first-run value from your own source; it runs at most once per install.customAttrsrides alongside the install ID and is never persisted. - Prefs keys share the
<prefixCache>.<env>.<suffix>scheme (cachefor values,userIdfor the install ID;prefixCachedefaults to'configwire'). ConfigWireFlutter.createConfigWireone-call factory returning a wiredConfigWire.