@@ -496,24 +496,33 @@ def navigate_view(e):
496496 current_view .controls = [print_wizard_view ]
497497 page .update ()
498498
499- home_icon_badge_count = 0
500-
501- def home_badge (e = None , increase = True , reset = False ):
502- nonlocal home_icon_badge_count
499+ def home_badge (e = None , reset = False ):
503500 if reset :
504- home_icon_badge_count = 0
505- increase = False
506- if increase :
507- home_icon_badge_count += 1
508-
509- if home_icon_badge_count == 0 :
510- home_icon . badge = None
501+ # I have to fully re-assign the icon control
502+ # to reset the badge to None. Simply
503+ # setting it = None doesn't work.
504+ home_icon . icon = ft . Icon (
505+ name = "home_outlined" ,
506+ badge = None
507+ )
511508 else :
512- home_icon .badge = str (home_icon_badge_count )
509+ home_icon .icon .badge = ft .Badge (small_size = 10 )
510+
511+ try :
512+ home_icon .icon .update ()
513+ except AssertionError as e :
514+ # Control isn't added to page yet so ignore
515+ pass
513516
514- home_icon = ft .Icon (
515- name = "home_outlined" ,
516- badge = str (home_icon_badge_count )
517+ home_icon = ft .NavigationRailDestination (
518+ icon = ft .Icon (
519+ name = "home_outlined" ,
520+ badge = None
521+ ),
522+ selected_icon = ft .Icon (
523+ name = "home"
524+ ),
525+ label_content = ft .Text ("Results" )
517526 )
518527
519528 rail = ft .NavigationRail (
@@ -528,11 +537,7 @@ def home_badge(e=None, increase=True, reset=False):
528537 selected_icon = "settings" ,
529538 label_content = ft .Text ("Settings" ),
530539 ),
531- ft .NavigationRailDestination (
532- icon = home_icon ,
533- selected_icon = "home" ,
534- label_content = ft .Text ("Results" ),
535- ),
540+ home_icon ,
536541 ft .NavigationRailDestination (
537542 icon = "terminal_outlined" ,
538543 selected_icon = "terminal" ,
0 commit comments