• Greg Spencer's avatar
    Optimize focus operations by caching descendants and ancestors. (#42683) · 134ac429
    Greg Spencer authored
    This optimizes certain paths in the FocusManager, FocusNode, and FocusScopeNode classes in order to fix a regression in stock_animation_open_first_frame_average when I added more focus nodes to the tree to do focus traversal.
    
    Mainly I removed some remaining sync* iterators, and also started caching the computation of descendants and ancestors, since those are iterated over fairly often.
    
    This improves stock_animation_open_first_frame_average by about 2.8% overall (so about half of a 4.9% regression, both averaged over 10 runs).
    
    Addresses #42564
    134ac429
focus_scope_test.dart 43.5 KB