77from bleak .backends .scanner import AdvertisementData
88from rich .style import Style
99from textual .app import App , ComposeResult
10+ from textual .reactive import reactive
1011from textual .widgets import Checkbox , DataTable , Footer , Header , Input
1112
1213if system () == "Linux" :
@@ -38,6 +39,8 @@ class BLEScannerApp(App[None]):
3839 ("s" , "toggle_scan" , "Toggle scan" ),
3940 ]
4041
42+ address_filter = reactive ("" )
43+
4144 def __init__ (self , cli_args : Namespace ):
4245 """Initialize BLE scanner."""
4346
@@ -62,9 +65,6 @@ def __init__(self, cli_args: Namespace):
6265 self .scanner = BleakScanner (** scanner_kwargs )
6366 self .scanning = False
6467
65- # Initialize empty address filter
66- self .address_filter = ""
67-
6868 # Initialize empty list of advertisements
6969 self .advertisements = []
7070
@@ -150,6 +150,10 @@ def on_input_changed(self, message: Input.Changed) -> None:
150150 else :
151151 self .address_filter = ""
152152
153+ def watch_address_filter (self , old_filter : str , new_filter : str ) -> None :
154+ """Watch method called when the reactive attribute address_filter
155+ changes.
156+ """
153157 self .recreate_table ()
154158
155159 def recreate_table (self ):
0 commit comments