feat: WiFi Advanced buffered save, unified Save UX, and guest detection improvement - #829
Conversation
…on improvement Migrate WiFi Advanced tab from fire-and-forget AsyncNotifier to FeatureState/Preservable pattern with buffered save. Unify save UX across all settings pages with spinner overlay and standardized snackbars. Replace guest network string matching with per-radio SSID instance ordering. Fix topology card overflow with Expanded layout and scalable coverage rings. Closes #828 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan Review Summary by QodoWiFi Advanced buffered save, unified Save UX, guest detection, and topology layout improvements
WalkthroughsDescription• Migrate WiFi Advanced tab from fire-and-forget AsyncNotifier to FeatureState/Preservable pattern with buffered save • Unify save UX across 9 settings pages with doSomethingWithSpinner() overlay and standardized snackbars • Replace guest network SSID string matching with per-radio instance ordering (lowest index = Main) • Fix dashboard topology card overflow by replacing fixed SizedBox with Expanded + ClipRect and scalable coverage rings Diagramflowchart LR
A["WiFi Advanced Tab"] -->|"Migrate to FeatureState/Preservable"| B["Buffered Save Pattern"]
B -->|"Dirty tracking"| C["Page-level Bottom Bar"]
D["9 Settings Pages"] -->|"Unified Save UX"| E["doSomethingWithSpinner + Snackbars"]
F["Guest Detection"] -->|"Per-radio SSID ordering"| G["Lowest index = Main, Rest = Guest"]
H["Topology Card"] -->|"Replace fixed SizedBox"| I["Expanded + ClipRect + Scalable Rings"]
File Changes1. lib/page/wifi_settings/models/wifi_advanced_feature_state.dart
|
Code Review by Qodo
1. copyWith clears errorMessage
|
Summary
AsyncNotifiertoFeatureState/Preservablepattern with buffered save and page-level dirty proxydoSomethingWithSpinner()overlay and standardizedshowSuccessSnackBar()/showFailedSnackBar()contains("guest")) with per-radio instance ordering (lowest index = Main, subsequent = Guest)SizedBox(height: 320)withExpanded+ClipRectand scalable coverage ringsTest plan
WifiAdvancedFeatureStatemodel tests — initial, isDirty, copyWith, EquatableUspWifiAdvancedNotifier— performFetch, setDfsEnabled dirty/revert (uniform + mixed originals), performSave, error handlingflutter analyze— no issues in changed filesCloses #828
Resolves #828
🤖 Generated with Claude Code